在 C# 中 new 关键字据说有三种用法
本文介绍了new关键字的三种用法,下面我们来看看三种的具体使用。 说到C 里的new关键字,大家肯定不陌生,它大概是日常编码中间出现频率最高的关键字之一了。通常,我们用它来创建一个新的对象实例。但你可能不知道,这个看似简单的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.
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
ZCode被外媒盯上,中国模型公司开始抢AI编程入口
编辑 | 王凤枝ZCode最近突然被海外媒体 "发现 "了。7月2日,VentureBeat把ZCode写成Z ai进入AI编程工具市场的一步;Business Insider则抓住了更容易传播的一点:这是一款价格更低的AI编程工具。这个框架容易带出两个误会:ZCode像是刚出现的新产品,也像是又一个 "
理想i6上半年交付破12万辆 成中大型纯电SUV销量冠军
理想i6上半年交付超12万辆,夺得中大型纯电SUV销量冠军。该车起售价24 98万元,车长近5米轴距3米,标配全铝悬架、双腔空气悬架及ADMax智驾系统,CLTC最高续航720公里,支持5C超快充。
年Arm架构将占头部云服务商半数算力
2025年头部超大规模云服务商算力中近50%基于Arm架构。全球十大云商积极开发Arm芯片,能效提升高达60%。NVIDIA等定制AI芯片采用ArmNeoverse平台,软件生态加速迁移。
vivo Arm联合实验室成立 赋能芯片技术创新
vivo与Arm联合实验室正式揭牌,双方基于真实应用场景分析性能与功耗瓶颈,共同优化调校方案。部分关键成果将应用于十月发布的vivoX200系列旗舰手机,旨在回归用户需求,提升芯片技术体验。
新飞猫U9随身WiFi限时低价抢先体验
飞猫U9随身WiFi采用WiFi6技术,网络速度提升25%,支持低延迟与高稳定。一键可控WiFi开关提升安全性并降低功耗。三网融合自动切换最优网络,36V防浪涌保障车载稳定。设备仅32克,支持10台设备连接,散热设计持久耐用。
- 热门数据榜
相关攻略
2026-07-14 17:28
2026-07-14 13:55
2026-07-14 13:55
2026-07-14 13:54
2026-07-14 13:54
2026-07-14 13:54
2026-07-14 13:54
2026-07-14 13:54
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

