後でどこかでインスタンスを使用しない限り、コンパイル後も同じである必要があります。ただし、 ILSpyは違いを示しています。
初版(課題あり)
.method private hidebysig static
void Main (
string[] args
) cil managed
{
// Method begins at RVA 0x2058
// Code size 13 (0xd)
.maxstack 1
.entrypoint
.locals init (
[0] class ConsoleApplication1.TestClass obj
)
IL_0000: newobj instance void ConsoleApplication1.TestClass::.ctor()
IL_0005: stloc.0
IL_0006: ldloc.0
IL_0007: callvirt instance void ConsoleApplication1.TestClass::TestMethod()
IL_000c: ret
} // end of method Program::Main
2 番目のバージョン (割り当てなし)
.method private hidebysig static
void Main (
string[] args
) cil managed
{
// Method begins at RVA 0x2058
// Code size 11 (0xb)
.maxstack 8
.entrypoint
IL_0000: newobj instance void ConsoleApplication1.TestClass::.ctor()
IL_0005: call instance void ConsoleApplication1.TestClass::TestMethod()
IL_000a: ret
} // end of method Program::Main
どちらもリリースモードでビルドされています。