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
相关产品推荐
相关产品推荐

