运行 ILDASM 在从相同的 C# 代码生成的两个程序集上(但可能是不同的编译器版本),我分别从每个 dll 中获得以下输出。
这两个语句有什么区别,特别是
.locals init (class MyClass/'<>c__DisplayClass3' V_0)
并且
.locals init ([0] class MyClass/'<>c__DisplayClass3' 'CS$<>8__locals4')
这两个语句有什么区别,特别是
'[0]'
符号的意义是什么?
MyClass
中包含的一个私有方法生成的。 我相信MyClass/'<>c__DisplayClass3'
是为在该方法中定义的Lambda函数生成的类的名称。 我主要关注的是这个特定语句为什么在可能不同编译器版本或操作系统环境中不同,并且它是否具有任何影响。感谢您的回答。 - Andrew Marshallldloc.0
将值推送到堆栈上。我不确定为什么 ildasm 认为仅有时显示索引是有用的。 - zinglon