default(int)vs int = 0之间的差异

Jul*_*eda 29 c#

谁知道使用以下方法声明整数变量之间是否存在任何差异:

var i = default(int)
Run Code Online (Sandbox Code Playgroud)

VS

var i = 0;
Run Code Online (Sandbox Code Playgroud)

可能是一个小的性能差异或其他差异?

谢谢大家!

Bra*_*NET 35

实际上,没有区别.根据MSDN

指定type参数的默认值.对于引用类型,这将为null,对于值类型,这将为零.

int 是一个值类型,因此表达式将解析为0.

我会执行显式0赋值,因为它更具可读性.


Eni*_*ity 30

这是var i = default(int)代码的IL :

IL_0001:  ldc.i4.0    
IL_0002:  stloc.0     // i
Run Code Online (Sandbox Code Playgroud)

这是var i = 0;代码的IL :

IL_0001:  ldc.i4.0    
IL_0002:  stloc.0     // i
Run Code Online (Sandbox Code Playgroud)

似乎它归结为个人偏好.

  • `var i = new int()`也是一样的. (5认同)

Rik*_*ika 6

两者没有区别。
在 C# 中,提供了用于不同情况的工具。这并不意味着在所有情况下都使用它们,无论其背后的逻辑原因如何。
例如 default 在泛型中最常见,因为在泛型类和方法中,出现的一个问题是当您事先不知道以下内容时如何将默认值分配给参数化类型 T。
虽然你可以将它与 int 等原始类型一起使用,但不建议你这样做,它存在的全部原因是别的。
使用后者,因为它更具可读性和逻辑性。
您可能还想在默认情况下查看此链接