使用反射器我得到以下输出:
.method private hidebysig static class myModelTestarea.Foo Method() cil managed
{
.maxstack 1
.locals init ([0] class myModelTestarea.Foo CS$1$0000)
L_0000: nop
L_0001: ldc.i4.0
L_0002: newarr object
L_0007: call object myModelTestarea.Program::Resolve(object[])
L_000c: castclass myModelTestarea.Foo
L_0011: stloc.0
L_0012: br.s L_0014
L_0014: ldloc.0
L_0015: ret
}
为了
private static Foo Method()
{
return (Foo)Resolve();
}
private static object Resolve( params object[] args )
{
return new Foo();
}
第 11-14 行是做什么的?我调用一个函数并得到一个结果(第 7 行)。我将结果转换为正确的返回类型(c 行) - 为什么不立即返回?
不知何故,转换后的结果被存储为一个局部变量——然后无条件跳转到下一行,再次加载局部变量。为什么?
在我看来,第 11-14 行和局部变量可以省略...?