将'var'初始化为null

时间:2014-03-07 08:16:33

标签: c# null var

以下变量初始化之间的运行时性能是否存在差异?

var    x = null as object;
var    x = (object)null;
object x = null;

2 个答案:

答案 0 :(得分:50)

我相信没有,因为编译的IL没有区别。

var    x = null as object;
var    x1 = (object)null;
object x2 = null;

编译为

IL_0001:  ldnull      
IL_0002:  stloc.0     // x
IL_0003:  ldnull      
IL_0004:  stloc.1     // x1
IL_0005:  ldnull      
IL_0006:  stloc.2     // x2

您只能使用ldnull操作码将所有本地人初始化为null,因此没有区别。

答案 1 :(得分:7)

首先:不,我相信这三个电话基本相同。

其次:即使它们之间存在任何差异,它肯定会如此微小,以至于它在应用程序中完全无关紧要。

这是任何程序中的一小部分,专注于此处和类似情况下的优化,通常会浪费时间,并且在某些情况下可能会使代码更加复杂,没有充分的理由。

有一个较长的interesting discussion about this on the programmers.stackexchange网站。