2010-01-10 76 views

回答

19

这是没有初始值或条件的循环,所以它还将长期持续下去,类似

while (true) 
{ 
    // body... 
} 

你需要使用一个break;声明走出循环。

+7

或返回。或者是一个例外(不是你应该那样做)。 – 2010-01-10 00:12:57

+1

它也适用于所有C语言。 – 2010-01-10 00:16:56

+0

在C中,它会像这样(1){....} – t0mm13b 2010-01-10 01:20:38

5

这将导致无限循环。见MSDN

0
while(true) { /* body */ } 
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汇编,只需将鼠标悬停在每个操作码上并弹出英文说明​​即可。对于这个特定的例子,你将需要点击停止来查看结果按钮,因为这个例子永远循环。

+0

感谢linqpad链接。看起来非常酷。 – Ben 2010-01-10 00:33:12

12

像这样的循环:

for (i = 0; i < 4; i++) { ... } 

相同:

i = 0; 
while (i < 4) { 
    ... 
    i++; 
} 

所以,像这样的循环:

for (;;) { ... } 

是一个较短的形式为:

for (;true;) { ... } 

所以它成为相同:

; 
while (true) { 
    ... 
    ; 
} 

即初始化和修改是可选的,并且当条件被省略时,它简单地评估为true