将’var’初始化为null

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

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

我相信 ,因为编译的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 

你可以看到所有的locals只使用ldnull操作码初始化为null,所以没有区别。

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

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

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

在programmers.stackexchange站点上有一个关于这个的更长时间的讨论 。