ildasm和.ldarg - 里面发生了什么?

时间:2013-11-22 18:25:52

标签: c# .net visual-studio-2012 cil il

使用c#,Net framework 4.5 notePad

尝试理解CIL(IL)语言的原理。目前创建2个简单方法

 public static Int32 Add(Int32 a, Int32 b)
    {
        return a + b;
    }
    public Int32 Add1(Int32 a, Int32 b)
    {
        return a + b;
    }

在ildasm.exe打开后

ildasm result

问题

为什么在Add方法中CIL使堆栈0中的加载参数和堆栈1中的第二个 - 在方法Add1中使用堆栈0 或者我错过了什么?

1 个答案:

答案 0 :(得分:9)

您的第一个方法传递了两个参数a(0)和b(1)。你的第二个传递了三个参数this(0),a(1)和b(2)。即使您没有使用this,它仍然存在。