Почему создается .ctor (), когда я компилирую код C # в IL?

С помощью этого простого кода C # я запускаю csc hello.cs; ildasm /out=hello.txt hello.exe .

class Hello
{
    public static void Main()
    {
        System.Console.WriteLine("hi");
    }
}

Это код IL из ildasm.

.class private auto ansi beforefieldinit Hello
       extends [mscorlib]System.Object
{
  .method public hidebysig static void  Main() cil managed
  {
    .entrypoint
    // Code size       13 (0xd)
    .maxstack  8
    IL_0000:  nop
    IL_0001:  ldstr      "hi"
    IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
    IL_000b:  nop
    IL_000c:  ret
  } // end of method Hello::Main

  .method public hidebysig specialname rtspecialname 
          instance void  .ctor() cil managed
  {
    // Code size       7 (0x7)
    .maxstack  8
    IL_0000:  ldarg.0
    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
    IL_0006:  ret
  } // end of method Hello::.ctor

} // end of class Hello

Какая польза от кода .method public instance void .ctor () ? Похоже, ничего не делает.

16
задан prosseek 29 August 2011 в 20:29
поделиться