当前位置: 首页
业界动态
在 C# 中 new 关键字据说有三种用法

在 C# 中 new 关键字据说有三种用法

热心网友 时间:2026-04-22
转载

本文介绍了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.


来源:https://www.51cto.com/article/840406.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
随变 - 字节跳动旗下抖音推出的AI视频社区应用

随变 - 字节跳动旗下抖音推出的AI视频社区应用

随变是什么 说起这两年AI应用的创新,字节跳动旗下抖音推出的“随变”绝对是个值得关注的选手。这款应用定位很清晰:一个主打潮流玩法的AI视频社区。它的核心卖点,是用AI生成个人虚拟形象,然后让你用这个“数字分身”去和各种角色——明星、影视IP、朋友——进行“合拍”,玩出花样。为了降低用户门槛,它的界面

时间:2026-04-22 19:55
FantasyWorld - 高德地图联合北邮推出的3D世界建模框架

FantasyWorld - 高德地图联合北邮推出的3D世界建模框架

FantasyWorld是什么 说到能将视频“理解”并“构建”成三维世界的AI,FantasyWorld是一个绕不开的名字。这个由高德地图与北京邮电大学联合开发的3D世界建模框架,其核心突破在于,它用一套统一的模型,就能从视频直接预测并生成高质量的3D场景。这背后的关键,是在一个已经训练好的强大视频

时间:2026-04-22 19:55
Yollo AI - 沉浸式AI角色对话与视频生成平台

Yollo AI - 沉浸式AI角色对话与视频生成平台

Yollo AI是什么 简单来说,Yollo AI是一个将沉浸式AI角色对话与AI视频生成能力合二为一的平台。在这里,用户不仅能与超过20万个各具特色的AI角色进行互动,体验从浪漫情感到奇幻冒险的深度连接,还能轻松地将文字或图片转化为生动的视频叙事。平台鼓励创造与分享,用户可以打造属于自己的独特AI

时间:2026-04-22 19:54
Qwen3-VL-Reranker - 阿里通义开源的跨模态理解模型

Qwen3-VL-Reranker - 阿里通义开源的跨模态理解模型

Qwen3-VL-Reranker是什么 说到多模态检索的“最后一公里”精准化,阿里通义推出的Qwen3-VL-Reranker绝对是一个绕不开的关键角色。简单来说,这款模型是在强大的Qwen3-VL基础上专门打造的跨模态理解专家。它的核心任务,就是处理任意模态组合的查询与文档对——比如你用一张图加

时间:2026-04-22 19:54
Qwen3-VL-Embedding - 阿里通义开源的多模态信息检索模型

Qwen3-VL-Embedding - 阿里通义开源的多模态信息检索模型

Qwen3-VL-Embedding是什么 在信息处理的世界里,让机器真正“看懂”图片并理解文字,一直是业界的核心挑战。现在,这个问题有了更优雅的解法——阿里通义推出的多模态信息检索模型Qwen3-VL-Embedding。简单来说,它的使命就是为文本、图像、图表文档乃至视频这些形态各异的数据,搭建

时间:2026-04-22 19:54
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程