2016-02-14 271 views
3

在C#中,一個問題一直在困擾着我一段時間,它與While和For Loop之間的實際主要區別是什麼。它只是純粹的可讀性,即;您可以在for循環中完成的所有事情都可以在一個while循環中完成,只需在不同的地方完成即可。因此,採取這些例子:C#while循環vs For循環?

int num = 3; 
while (num < 10) 
{ 
    Console.WriteLine(num); 
    num++; 
} 

VS

for (int x = 3; x < 10; x++) 
{ 
    Console.WriteLine(x); 
} 

兩個代碼迴路產生相同的結果,兩者之間唯一的區別是,for循環的力量,你聲明一個新的變量,並設置迭代值每個循環週期的開始?也許我在任何重大差異方面都失去了其他東西,但如果有人能夠直接對我提出這個建議,那就太好了。謝謝。

+2

「它只是純粹的可讀性」 - 是的。儘管'for'循環更加習慣。 – ChrisF

+0

while循環不包括其參數中的一種步進。它也可以設置一個while循環在循環中沒有明確的結束,while循環有一個定義的開始和結束。 – Shaun

+1

For循環不必具有@shaun定義的結束。作爲一個明顯的反例,'for(;;)'是一個無限循環。 –

回答

2

是的,它們在背景中完全一樣(在Assembly中,就是這樣)。

通常,當重複次數已知時,使用for循環更爲常見,我們不打算更改計數器(索引)。

while循環也具有標記循環的優點,例如當從用戶接收輸入時,直到給出特定的東西爲止。

7

是兩者之間的唯一區別:for循環強制您聲明一個新變量並在每個循環開始時設置迭代值?

for循環強迫你什麼都沒有。您可以省略3個元素中的任何一個。最小的形式是

for(;;) // forever 
{ 
    DoSomething(); 
} 

但是你可以使用3個元素編寫更簡潔的代碼:

for(initializer; loop-condition; update-expression) 
{ 
    controlled-statements; 
} 

等同於:

{ 
    initializer; 
    while(loop-condition) 
    { 
     controlled-statements; 

    continue_target: // goto here to emulate continue 
     update-expression; 
    } 
} 

注意外{}括號,在for(int i = 0; ...; ...)i本地的for循環。明確的好處。

但使用的主要區別在於,在循環內調用continue;時,在while循環中比在for循環中更容易得到邏輯錯誤。