当在 MSIL 中调用方法时,我通常会看到值 !!0
被传递给参数,通常是连续多次。
这是什么意思,具体来说,我认为这意味着从堆栈中弹出第一个值并将其作为参数推送。但是,我想知道是否还有比这更进一步的说明。例如,第一个 !
是否表示某种含义,而第二个 !
表示重复上一步,为下一个参数分配做准备?
明确地说,!!
运算符是做什么的?
最佳答案
Generic parameter in a method definition, accessed by index from 0
如 the ECMA specification for CIL 所示.
第 11.7.1 节 - 类型。这是 ECMA 335,如果将来链接失效了:)
所以用人类的话来说,它是一个指向泛型方法的泛型参数类型的指针。对于泛型类型的泛型参数类型,您可以使用 !0
(和 !1
等)。
关于.net - "!!"在 MSIL 中的明确含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29009470/