我看到以下代码
for (;;)
{
//body...
}
这是什么意思?
答案 0 :(得分:20)
这是一个没有起始值或条件的循环,因此它将永远存在,类似于
while (true)
{
// body...
}
您需要使用break;
语句才能退出循环。
答案 1 :(得分:13)
像这样的循环:
for (i = 0; i < 4; i++) { ... }
与:
相同i = 0;
while (i < 4) {
...
i++;
}
所以,像这样的循环:
for (;;) { ... }
是一种较短的形式:
for (;true;) { ... }
所以它变成了:
;
while (true) {
...
;
}
即。初始化和修改是可选的,当省略条件时,它只是评估为true
。
答案 2 :(得分:5)
这会导致无限循环。见MSDN
答案 3 :(得分:4)
它永远重复身体。
这是反汇编:
IL_0001: br.s IL_0005
IL_0003: nop
IL_0004: nop
IL_0005: ldc.i4.1
IL_0006: stloc.0
IL_0007: br.s IL_0003
LINQPad是一个非常好的小工具,可以让你探索这样的问题。运行linqpad,将语言下拉列表设置为“C#语句”,输入代码片段,单击运行,单击输出窗口上方的“IL”按钮。如果您不知道IL汇编,只需将鼠标悬停在每个操作码上,弹出英文说明即可。对于此特定示例,您需要单击“停止”以查看结果按钮,因为此示例将永远循环。
答案 4 :(得分:0)
while(true) { /* body */ }