在 C# 中 new 关键字据说有三种用法
本文介绍了new关键字的三种用法,下面我们来看看三种的具体使用。
说到C#里的new关键字,大家肯定不陌生,它大概是日常编码中间出现频率最高的关键字之一了。通常,我们用它来创建一个新的对象实例。但你可能不知道,这个看似简单的new,其实还有另外两副“面孔”:它既可以作为修饰符来使用,也能在泛型中充当约束条件。接下来,我们就一起把这三种用法的门道摸清楚。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

一、NEW关键字作为运算符
作为运算符的new,其核心任务就是创建类型的新实例。这是我们最熟悉的场景,比如实例化一个类、创建一个数组,甚至是初始化匿名类型,都离不开它。看几个典型的例子:
//new一个配置类
var configuration = new ConfigurationBuilder();
//创建一个字典
var dict = new Dictionary();
dict["first"] = 10;
//创建数组
var numbers = new int[3];
numbers[0] = 10;
//匿名类型实例化
var example = new { Greeting = "Hello", Name = "World" };
二、NEW关键字作为修饰符
当new扮演修饰符的角色时,它的作用就变得微妙了——用于显式隐藏从基类继承而来的成员。这意味着,在实现多态时,如果子类成员用new修饰,那么通过父类引用去调用,将不会触发子类的这个版本。通过下面的例子,你能看得更明白:
//新建父类
class people
{
public string name { get; set; }
public virtual void say()
{
Console.WriteLine("hello people");
}
}
//男人
class man : people
{
public override void say()
{
Console.WriteLine("hello man");
}
}
//女人
class woman : people
{
//这个方法被显示隐藏了
public new void say()
{
Console.WriteLine("hello woman");
}
}
static void Main(string[] args)
{
//这里不影响调用
woman w = new woman();
w.name = "小花";
w.say();
//这里隐藏了子类,会调用父类
people p = new woman();
p.name = "小花";
p.say();
//这里优先调用子类 如果找不到重写会调用父类
people p2 = new man();
p2.name = "小王";
p2.say();
}
运行上面的代码,打印结果如下:

三、NEW关键字作为泛型中约束
最后,new还能在泛型领域大显身手。作为约束条件时,new()要求泛型类型参数必须有一个公共的无参数构造函数。有个重要的前提:该类型不能是抽象类。我们来看一个具体的应用实例:
//新建一个类
public class People
{
private string name;
private int id;
public People()
{
name = "张山";
id = 0;
}
public People(string _name, int _id)
{
name = _name;
id = _id;
}
public string Name
{
get { return name; }
set { name = value; }
}
public int ID
{
get { return id; }
set { id = value; }
}
}
//使用new约束
class ItemFactory where T : new()
{
public T GetNewItem()
{
return new T();
}
}
//输出
static void Main(string[] args)
{
ItemFactory PeopleFactory = new ItemFactory();
//此处编译器会检查People是否具有公有的无参构造函数。否则会报错
Console.WriteLine("{0}'ID is {1}.", PeopleFactory.GetNewItem().Name, PeopleFactory.GetNewItem().ID);
}
//打印结果为:张山'ID is 0.
热门专题
热门推荐
腾讯生态整合新动向:QQ全面接入微信小程序 7月1日,腾讯QQ小程序开发者平台发布了一项重要更新。核心内容是,为了帮助开发者降低双端开发与维护成本,QQ将全面接入微信小程序体系。这意味着,未来用户可以直接在QQ内搜索并打开微信小程序。 对于现有的存量QQ小程序,此次调整并未“一刀切”。它们目前仍可正
下半年芯片市场巅峰对决提前揭幕 今年下半年,全球芯片市场的战火将空前炽热。两位重量级选手——联发科与高通,已经准备好亮出各自的王牌。天玑9600系列与骁龙8E6系列,这两大迭代旗舰平台的正面交锋,注定会成为今年科技行业最值得关注的戏码。 双芯策略:精准卡位旗舰市场 有意思的是,联发科这次玩了个新花样
在当今数字化社交的时代,微信已成为人们日常沟通交流的重要工具。不少人都发现,微信好友申请居然可以通过搜索 qq 号来添加,这背后有着诸多有趣的原因和便利之处。 一、社交关系的延续与拓展 要知道,微信与QQ同属腾讯旗下,两者之间存在着千丝万缕的联系。很多用户的社交关系其实根植于QQ时代,那些好友列表里
高德地图如何更改定位?三种方法详解及注意事项 无论是日常通勤、外出旅行还是朋友相聚,高德地图已经成了我们依赖的“导航神器”,精准定位和路线规划是其核心功能。不过,现实场景有时会有点特殊——比如,你可能需要模拟一个位置来测试应用,或者在某个游戏中“签到”,又或者只是想和朋友开个无伤大雅的玩笑。这个时候
巧学宝App绑定手机号全程指南 在巧学宝App上完成手机号绑定,是解锁其完整功能的关键一步。这个看似简单的操作,能为你后续的学习之旅带来不少实实在在的便利。那么,该如何快速搞定呢?下面这张流程图,能帮你一眼看清完整的操作路径。 第一步:进入个人中心 首先,打开你的巧学宝App。进入主界面后,注意力可





