【发布时间】:2015-12-07 10:29:47
【问题描述】:
在编译的 C# 程序上使用 ILDASM.exe 时,它显示方法中的每条指令都有一个标签。
例如:
IL_0001: ldc.i4.4
IL_0002: stloc.0
IL_0003: ldc.r8 12.34
IL_000c: stloc.1
IL_000d: ldc.r8 3.1415926535897931
IL_0016: stloc.2
IL_0017: ldstr "Ehsan"
IL_001c: stloc.3
IL_001d: ret
这是为什么?这样做是不是效率低下,还是 CIL 编译器自己优化了这些标签?
【问题讨论】:
-
是什么让您认为这是一个标签,而不是 ildasm 如何显示 IL?
-
所以它就像没有“IL_0001”行? @JonSkeet
-
@EhsanSajjad:有点像。我相信它们充当您可以在 IL 中使用的标签,但我不相信它们存在于实际生成的代码中。
-
通过 ILDASM 显示的 IL 和实际在程序集中的 IL 不同?
标签: c# .net-assembly cil il