以下变量初始化之间的运行时性能有任何差异?
var x = null as object;
var x = (object) null;
object x = null;
我相信 no ,因为编译的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
OPCODE看到所有当地人的初始化为NULL,因此没有差异。
首先:不,我相信这三个呼叫本质上是等效的。
其次:即使它们之间有任何差异,它肯定是如此微小,以至于它与应用程序完全无关。
这是任何计划中的一小部分,在此处和在类似情况下专注于优化,通常会浪费时间,在某些情况下可能会使您的代码变得更加复杂,因此没有充分的理由。
在aprochmers.stackexchange站点上,有更长的有趣讨论。