gpt4 book ai didi

c# - if 在 IL 中是什么样子的?

转载 作者:行者123 更新时间:2023-11-30 13:13:50 24 4
gpt4 key购买 nike

if 语句被编译成 IL 时是什么样子的?

这是一个非常简单的 C# 结构。有人能给我一个更抽象的定义吗?

最佳答案

这里有一些 if语句以及它们如何转换为 IL:

ldc.i4.s 0x2f                      var i = 47;
stloc.0

ldloc.0 if (i == 47)
ldc.i4.s 0x2f
bne.un.s L_0012

ldstr "forty-seven!" Console.WriteLine("forty-seven!");
call Console::WriteLine

L_0012:
ldloc.0 if (i > 0)
ldc.i4.0
ble.s L_0020

ldstr "greater than zero!" Console.WriteLine("greater than zero!");
call Console::WriteLine

L_0020:
ldloc.0 bool b = (i != 0);
ldc.i4.0
ceq
ldc.i4.0
ceq
stloc.1

ldloc.1 if (b)
brfalse.s L_0035

ldstr "boolean true!" Console.WriteLine("boolean true!");
call Console::WriteLine

L_0035:
ret

这里要注意一件事:IL 指令总是“相反”。 if (i > 0)翻译成有效的意思是“如果 i <= 0 , 然后跳过 if 的正文 block ”。

关于c# - if 在 IL 中是什么样子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3663438/

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