任何人都知道使用:
声明整数变量之间是否存在任何差异var i = default(int)
VS
var i = 0;
可能是一个小的性能差异或其他差异?
感谢所有人!
答案 0 :(得分:30)
实际上,没有区别。根据{{3}}
指定type参数的默认值。这将为null 对于引用类型,对于值类型为零。
int
是一个值类型,因此表达式将解析为0.
我会执行显式0赋值,因为它更具可读性。
答案 1 :(得分:28)
这里是var i = default(int)
代码的IL:
IL_0001: ldc.i4.0
IL_0002: stloc.0 // i
这里是var i = 0;
代码的IL:
IL_0001: ldc.i4.0
IL_0002: stloc.0 // i
似乎归结为个人偏好。
答案 2 :(得分:3)
两者没有区别。
在C#中,有针对不同情况提供的设施。这并不意味着在所有情况下都使用它们,无论它们背后的逻辑原因如何
例如,默认在泛型中最常见,因为在泛型类和方法中,出现的一个问题是如果事先不知道以下内容,如何为参数化类型T分配默认值。
虽然你可以将它用于诸如int之类的原始类型,但你不建议你这样做,但它存在的全部原因都是别的。
使用后者,因为它更具可读性和逻辑性
您可能还想查看this link on default
答案 3 :(得分:1)
就功能而言,不,没有区别,因为0
是类型int
的默认值。
就性能而言,我非常确定default(int)
在编译期间被0替换,因此在编译期间只能发生轻微的性能损失,而不是运行时。
答案 4 :(得分:1)
如果在编译器中更改了(默认)定义,那么另一个因素可能在将来,那么您的项目可能会中断。
答案 5 :(得分:1)
我相信两者是相同的,但可能明确的值会更好,因为默认调用方式从default(int)
更改为default
直接
int a =默认值(int);
从C#7.1开始,您可以使用默认文字进行初始化 具有其类型默认值的变量:
int a =默认值;
引用https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/default-values-table