C#箴言:定义常量的两种方法

[ 2558 查看 / 12 回复 ]

对应的 il代码为
  1. .method public hidebysig specialname rtspecialname
            instance void  .ctor() cil managed
    {
      // 代码大小      24 (0x18)
      .maxstack  8
      IL_0000:  ldarg.0
      IL_0001:  ldc.i4.3
      IL_0002:  stfld      int32 ConsoleApplication1.Test::pi
      IL_0007:  ldarg.0
      IL_0008:  call      instance void [mscorlib]System.Object::.ctor()
      IL_000d:  nop
      IL_000e:  nop
      IL_000f:  ldarg.0
      IL_0010:  ldc.i4.4
      IL_0011:  stfld      int32 ConsoleApplication1.Test::pi
      IL_0016:  nop
      IL_0017:  ret
    } // end of method Test::.ctor
复制代码
TOP

IL_0001:  ldc.i4.3
这条语句分配了 3 这个值到栈上,紧接着
IL_0002:  stfld      int32 ConsoleApplication1.Test::pi
这句话,给pi赋值3
  IL_0008:  call      instance void [mscorlib]System.Object::.ctor()
调用了 Object 的构造器,来实例化对象
  IL_0011:  stfld      int32 ConsoleApplication1.Test::pi
第二次(也是最后一次给pi赋值,为4)
TOP

谢谢,获益良多
TOP