我有以下 C# 代码。
public void HelloWorld()
{
Add(2, 2);
}
public void Add(int a, int b)
{
//Do something
}
它产生以下 CIL
.method public hidebysig instance void HelloWorld() cil managed
{
// Code size 11 (0xb)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.0
IL_0002: ldc.i4.2
IL_0003: ldc.i4.2
IL_0004: call instance void ConsoleApplication3.Program::Add(int32,
int32)
IL_0009: nop
IL_000a: ret
} // end of method Program::HelloWorld
现在,我不明白的是偏移量 0001 处的行:
ldarg.0
我知道那个操作码是做什么用的,但我真的不明白为什么在这个方法中使用它,因为没有参数,对吧?
有人知道为什么吗?:)