"!!" 是什么意思?在 MSIL 中明确表示?

What does "!!" explicitly mean in MSIL?

在 MSIL 中调用方法时,我通常会看到值 !!0 被传递给参数,而且通常连续多次。

这是什么意思,具体来说,我认为它的意思是将第一个值弹出堆栈并将其作为参数压入。但是,我想知道是否有进一步的说明比起那个来说。例如,第一个 ! 是否意味着什么,第二个 ! 表示重复最后一步,为下一个参数分配做准备?

明确地说,!! 运算符是做什么的?

Generic parameter in a method definition, accessed by index from 0

the ECMA specification for CIL.

第 11.7.1 节 - 类型。它是 ECMA 335,如果 link 将来会死:)

所以用人类的话说,它是一个指向泛型方法的泛型参数类型的指针。对于泛型类型的泛型参数类型,您将使用 !0(和 !1 等)。