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

时间:2014-09-11 02:22:07

标签: c#

任何人都知道使用:

声明整数变量之间是否存在任何差异
var i = default(int)

VS

var i = 0;

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

感谢所有人!

6 个答案:

答案 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