gpt4 book ai didi

c# - C# 中 for(;;) 和 while (true) 的区别?

转载 作者:IT王子 更新时间:2023-10-29 04:51:49 33 4
gpt4 key购买 nike

从句法上看,它们会无限循环,直到遇到 break 语句,但它们是否被编译成相同的东西? for 稍微快一点是因为它没有要检查的条件吗?除了代码可读性之外,还有什么区别吗?

最佳答案

鉴于此输入:

private static void ForLoop()
{
int n = 0;
for (; ; )
{
Console.WriteLine(n++);
}
}

private static void WhileLoop()
{
int n = 0;
while (true)
{
Console.WriteLine(n++);
}
}

...你得到这个输出:

.method private hidebysig static void  ForLoop() cil managed
{
// Code size 14 (0xe)
.maxstack 3
.locals init ([0] int32 n)
IL_0000: ldc.i4.0
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: dup
IL_0004: ldc.i4.1
IL_0005: add
IL_0006: stloc.0
IL_0007: call void [mscorlib]System.Console::WriteLine(int32)
IL_000c: br.s IL_0002
} // end of method Program::ForLoop


.method private hidebysig static void WhileLoop() cil managed
{
// Code size 14 (0xe)
.maxstack 3
.locals init ([0] int32 n)
IL_0000: ldc.i4.0
IL_0001: stloc.0
IL_0002: ldloc.0
IL_0003: dup
IL_0004: ldc.i4.1
IL_0005: add
IL_0006: stloc.0
IL_0007: call void [mscorlib]System.Console::WriteLine(int32)
IL_000c: br.s IL_0002
} // end of method Program::WhileLoop

非常相似,我会说(相同,甚至)。

关于c# - C# 中 for(;;) 和 while (true) 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347477/

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