当在MSIL中调用方法时,我通常会看到值!!0
被传递一个参数,通常连续多次传递。
这是什么意思,具体来说,我认为它意味着从堆栈中弹出第一个值并将其作为参数推送。然而,我想知道是否还有进一步的澄清。例如,第一个!
是什么意思,第二个!
代表重复最后一步,为下一个参数分配做准备?
明确地说,!!
运营商做了什么?
答案 0 :(得分:3)
方法中的通用参数 定义,从0开始按索引访问
与the ECMA specification for CIL一样。
第11.7.1节 - 类型。它是ECMA 335,如果链接在将来变得死亡,那么:)
因此,从人类的角度来说,它是指向泛型方法的泛型参数类型的指针。对于泛型类型的泛型参数类型,您可以使用!0
(以及!1
等)。