gpt4 book ai didi

c# - 即使没有参数,也使用 CIL OpCode (Ldarg_0)

转载 作者:太空狗 更新时间:2023-10-29 18:01:32 25 4
gpt4 key购买 nike

我有以下 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

我知道那个操作码是做什么用的,但我真的不明白为什么要在这个方法中使用它,因为没有参数,对吧?

有人知道为什么吗? :)

最佳答案

在实例方法中有一个索引为 0 的隐式参数,表示调用该方法的实例。它可以使用 ldarg.0 操作码加载到 IL 评估堆栈上。

关于c# - 即使没有参数,也使用 CIL OpCode (Ldarg_0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16346155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com