1

IL_0000IL代码中的这个符号(等)是什么。这是真正的内存堆地址吗?

  IL_0000:  nop
  IL_0001:  ldstr      "here is something"
  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000b:  nop
  IL_000c:  ldc.i4.s   18
  IL_000e:  newobj     instance void Proj.Stock::.ctor(int32)
  IL_0013:  stloc.0
  IL_0014:  ldstr      "another"
  IL_0019:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_001e:  nop
  IL_001f:  ldstr      "and even more"
  IL_0024:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_0029:  nop
  IL_002a:  ret
4

1 回答 1

4

IL_0000:一个代码标签。它实际上只是一个标识符,因此您可以通过名称而不是字节数轻松引用跳转位置。

请参阅公共语言基础结构 (CLI) 标准文档。 ECMA-335第 II.5.4 节

II.5.4 标签和标签列表

提供标签是为了方便编程;它们代表编码在元数据中的数字。标签表示的值通常是从当前方法开始的字节偏移量,尽管精确编码会根据逻辑元数据结构或 CIL 流中标签出现的位置而有所不同。

...

于 2016-06-21T19:04:09.830 回答