You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中使用0、new()、default初始化int变量的区别是什么?

C#中int变量用0、new()、default初始化的区别

在你给出的代码场景里,这三种初始化方式最终得到的变量值都是0,运行结果完全一致,但从语法设计和适用场景上存在差异:

  • 直接赋值0
    这是最直白的写法,一眼就能看出变量初始值是0,可读性拉满。适合你明确知道要给int变量赋0值的场景,没有任何歧义,是int初始化的首选写法。

  • 使用new()
    这是调用int的无参构造函数,C#里所有值类型都自带无参构造函数,执行后会返回该类型的默认值——对于int来说就是0。这种写法的优势是通用性强:如果以后把int换成其他值类型(比如bool、double),这个写法不用改就能拿到对应类型的默认值。不过对int这种明确的数值类型来说,可读性不如直接写0。

  • 使用default关键字
    default会返回对应类型的默认值:值类型返回“零值”(int是0,bool是false),引用类型返回null。它比new()的通用性更强,尤其是在泛型场景中——比如写泛型方法时,default能适配所有类型,而new()要求泛型参数必须有无参构造函数。举个例子:

    T GetDefaultValue<T>()
    {
        return default; // 不管T是int、string还是自定义struct,都能返回正确的默认值
        // return new T(); 这里会编译报错,除非给T加上where T : new()约束
    }
    

总结一下:在你的代码示例里三者效果完全相同,但如果是需要适配多种类型的通用代码或泛型场景,new()和default更灵活;如果只是给int赋0,直接写0最清晰易懂。

内容的提问来源于stack exchange,提问作者fzyier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 01:45:32