我在 SO 或 Internet 上都找不到类似的问题/答案,并且与这个问题一样无用,也许这是我在阅读 MSIL 时想到的一个问题。我很想了解 IL 操作执行在我的场景中是如何工作的,即使这不是一个实际问题,我也没有人要问。
前提:
请记住,MSIL 命令和函数的执行分三个步骤完成:
- 将命令操作数或函数参数压入堆栈。
- 执行 MSIL 命令或调用函数。命令或函数从堆栈中弹出其操作数(参数)并将结果压入堆栈结果(返回值)。
- 从堆栈中读取结果。
步骤 1 和 3 是可选的。例如,void 函数不会将返回值压入堆栈。
我知道这是一种方法的作用,它决定了需要多少“处理能力”,但为了我的好奇心,让我们考虑这两种非常基本的方法:
第一种方法:
void Method1()
{
var result = 1+1;
}
第二种方法:
int Method2()
{
var result = 1+1;
return result;
}
问题:
因为 void 方法不推送返回值(或者是否存在隐式返回),这是否意味着与第二种方法相比,它在执行时需要更少的开销?