(;;)对C#的意义是什么

时间:2010-01-10 00:10:03

标签: c# for-loop

我看到以下代码

for (;;)
{
//body...
}

这是什么意思?

5 个答案:

答案 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 */ }