C#中new的用法及与override的区别分析
发布时间 - 2026-01-11 01:13:07 点击率:次C#中new的用法有三种:

(1)new是运算符,用于创建对象和调用构造函数。如Class1=new Class1();也可以为值类型调用默认的构造函数如int a=new int();此时a=0.
(2)new是修饰符,用于隐藏基类成员的继承成员。override不能隐藏积累成员的继承成员。如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A
{
class Program
{
abstract public class Test
{
public virtual void Prinf()
{
Console.WriteLine("Abstract Printf...");
}
}
public class Class1 : Test
{
public override void Prinf()
{
Console.WriteLine("Class One Override Printf...");
}
}
public class Class2 : Test
{
public new void Prinf()
{
Console.WriteLine("Class Two New Printf...");
}
}
static void Main(string[] args)
{
Class1 cls1 = new Class1();
Class2 cls2 = new Class2();
cls1.Prinf();
cls2.Prinf();
((Test)cls1).Prinf();
((Test)cls2).Prinf();
Console.ReadLine();
}
}
}
运行结果表明:new修饰符隐藏了重写方法,通过将派生对象转为为基类对象,调用了基类的方法。而override则是完全重写了方法,即便是转为基类对象也调用的也是派生类的重写方法。
即:new隐藏的基类方法,override重写基类方法。
(3)new是约束。用在泛型中添加类型的约束。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace A
{
class Test<T>
where T : new()//定义类型T的约束,表示T类型必须有不带参数的构造函数
{
public T GetItem()
{
return new T();//如果不添加new()约束,编译错误:变量类型“T”没有 new() 约束,因此无法创建该类型的实例
//想一下,T类型不知道,编译器不知道分配多大的空间,所以会通过反射技术实现
}
}
class TClass
{
private int a;
public TClass() //如果不添加无参构造函数,编译错误:TClass必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法“A.Test<T>”中的参数“T”
{
}
public TClass(int a)
{
this.a = a;
}
}
class Program
{
static void Main(string[] args)
{
Test<TClass> test = new Test<TClass>();
Console.ReadLine();
}
}
}
注释:参考http://msdn.microsoft.com/zh-cn/library/sd2w2ew5.aspx
# C#
# new
# C#中new的几种用法详解
# 详解C#用new和override来实现抽象类的重写区别
# 深入理解C#中new、override、virtual关键字的区别
# C#基础知识之new关键字介绍
# C#中Override关键字和New关键字的用法详解
# C#中new和override的区别个人总结
# .net(c#)中的new关键字详细介绍
# 基于C# 中可以new一个接口?的问题分析
# C# new和override的区别分析
# 重写
# 修饰符
# 则是
# 也可
# 写了
# 多大
# 不带
# 用在
# 有三种
# 运算符
# 派生类
# 即便是
# Program
# abstract
# Linq
# namespace
# Text
# Prinf
# Console
# WriteLine
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
js实现点击每个li节点,都弹出其文本值及修改
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel怎么清理缓存_Laravel optimize clear命令详解
node.js报错:Cannot find module 'ejs'的解决办法
Laravel API资源类怎么用_Laravel API Resource数据转换
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
原生JS实现图片轮播切换效果
Laravel怎么为数据库表字段添加索引以优化查询
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
如何在万网自助建站平台快速创建网站?
网站页面设计需要考虑到这些问题
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
js实现获取鼠标当前的位置
制作电商网页,电商供应链怎么做?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
如何在VPS电脑上快速搭建网站?
如何快速使用云服务器搭建个人网站?
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
如何选择可靠的免备案建站服务器?
Bootstrap CSS布局之列表
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
详解Android——蓝牙技术 带你实现终端间数据传输
网站制作价目表怎么做,珍爱网婚介费用多少?
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
Laravel如何升级到最新版本?(升级指南和步骤)
Laravel如何保护应用免受CSRF攻击?(原理和示例)
nodejs redis 发布订阅机制封装实现方法及实例代码
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
如何在阿里云虚拟服务器快速搭建网站?
如何在Windows 2008云服务器安全搭建网站?
iOS验证手机号的正则表达式
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
简单实现jsp分页
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
Laravel安装步骤详细教程_Laravel环境搭建指南
如何快速搭建高效WAP手机网站?
Python3.6正式版新特性预览
如何快速查询网站的真实建站时间?
如何在阿里云部署织梦网站?
Laravel如何创建自定义Facades?(详细步骤)

