菜鸟游戏网 - 游戏让生活变快乐! 全站导航 全站导航
AI工具安装教程 新手教程 进阶教程 辅助资源 AI提示词 热点资讯 技术资讯 产业资讯 内容生成 模型技术 AI信息库

已有账号?

您的位置 : 资讯 > 其他资讯 > 在 C# 中 new 关键字据说有三种用法

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

来源:菜鸟下载 | 更新时间:2026-04-25

本文介绍了new关键字的三种用法,下面我们来看看三种的具体使用。 说到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.


菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。

展开
尘埃的信任
尘埃的信任
类型:动作射击 运营状态:公测 语言:简体中文
像素 冒险 剧情
前往下载

相关文章

更多>>

热门游戏

更多>>