在int i =0和int i = default(int)之间是否存在性能差异?
本文关键字:int 性能 存在 是否 default 之间 | 更新日期: 2023-09-27 18:02:33
我正在创建一个整数,我想在使用之前用0实例化它
我先写的
int i = default(int);
,然后我把它去掉,替换成另一个
int i = 0;
我想知道我的选择是否是最好的mini mini性能。default()函数会在编译时增加指令吗?
不,它们在编译时被解析并产生相同的IL。值类型将是0
(或false
,如果你有一个bool,但这仍然是0)和引用类型是null
。
Marlon的答案在技术上是正确的,但是每个选项之间应该有明确的语义差异。
int i = 0;
当要对整数进行数学运算时,将初始化为文字0在语义上是有意义的,并且该运算需要以变量为特定的0值开始。一个很好的例子是创建一个索引计数器变量;你要从0开始,然后开始计数。
int i = default(int);
将变量设置为其default
值是有意义的,例如,当您使用所述变量创建一个类时,您知道该变量将在稍后的过程中手动设置。下面是一个例子(不管它可能多么不切实际):
class IntegerClass
{
private int value;
public IntegerClass(int value)
{
this.value = value;
}
public void Reset()
{
this.value = default(int);
}
}
同样,它们在技术上是相等的(实际上会编译成相同的CIL),但每个都提供不同的语义含义。
而且,在使用泛型时,可能需要使用default
来初始化变量。
public T SomeOperation<T>()
{
T value = default(T);
this.SomeOtherOperation(ref value);
return T;
}
唯一真正的区别是编译时间,所以我想当你按Debug或Compile时,它会比另一种方式快毫毫毫毫毫毫毫毫秒但一旦编译完成,它就会和Marlon说的完全一样
这些小的改变只会影响你的实际编程时间,所以从更广泛的意义上来说,输出default(int)比写0要慢,而且你花在它上面的时间甚至更长。