我怀疑这两个方面;
第一;
Test test = new Test();
result = test.DoWork(_param);
Run Code Online (Sandbox Code Playgroud)
第二个;
result = new Test().DoWork(_param);
Run Code Online (Sandbox Code Playgroud)
如果我们不将新创建的实例分配给变量并直接调用该方法会发生什么?
我看到IL代码的两种方式有所不同.
下面这个是第一个c#代码的IL输出
IL_0000: ldstr "job "
IL_0005: stloc.0
IL_0006: newobj instance void Works.Test::.ctor()
IL_000b: stloc.1
IL_000c: ldloc.1
IL_000d: ldloc.0
IL_000e: callvirt instance string Works.Test::DoWork(string)
IL_0013: pop
IL_0014: ret
Run Code Online (Sandbox Code Playgroud)
这个是第二个c#代码的IL输出
IL_0000: ldstr "job "
IL_0005: stloc.0
IL_0006: newobj instance void Works.Test::.ctor()
IL_000b: ldloc.0
IL_000c: call instance string Works.Test::DoWork(string)
IL_0011: pop
IL_0012: ret
Run Code Online (Sandbox Code Playgroud)
你能告诉我吗?