我正在使用 Mono.Cecil 编写一个小型 IL 编织应用程序,这需要我在 IL 级别上操作目标程序集。
我的问题很简单,但我仍然觉得这件事很混乱。和指令之间的实际区别是什么?ldfld
ldflda
我咨询过msdn,似乎在ldfld
获取字段的值时,ldflda
获取了字段的地址。好吧……但这意味着什么?我一开始以为前者用于值类型(和字符串),后者用于引用类型,但我编译了一个 C# 片段并在 Reflector 中检查它,结果证明我错了。
ldflda
当 C# 编译器发出而不是 时,我无法找到任何不同的模式ldfld
,并且我的搜索没有发现任何可以解释这一点的文章。那么什么时候用ldflda
代替ldfld
呢?
任何帮助将不胜感激。