2010-01-10 51 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