以下变量初始化之间的运行时性能是否存在差异?
var x = null as object;
var x = (object)null;
object x = null;
答案 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网站。