2011-08-21 94 views
1

可能重複:
why can't we define a variable inside a while loop?在`while`循環中,爲什​​麼我不能在`for`循環中聲明條件變量?

我想簡化下面的代碼:

string line; 
while ((line = sr.ReadLine()) != null) 

到:

while ((string line = sr.ReadLine()) != null) 

但失敗。

但是,我們一定可以在for做到這一點:

for (int i=0, int n=50;i<n;i++) 
+0

http://stackoverflow.com/questions/1581364/why-cant-we-define-a-variable-inside-a-while-loop – 2011-08-21 22:54:13

回答

5

,您仍然可以使用for

for (string line; (line = sr.ReadLine()) != null;) 
    ... 
1

我相信原因是,你將變量多次(在每個循環過程)聲明。

問及這裏詳細回答:Same question

2

由於while循環需要一個條件,這是什麼會做的是在每次循環運行時申報line一個新實例,因爲評估條件,每次通過循環。

它在for循環中工作,因爲初始化程序(三個以分號分隔的表達式中的第一個)在開始時只運行一次;條件是第二個表達式。嘗試在for循環的條件表達式中聲明變量時,您會遇到同樣的問題。

1

在for循環中:

for(<<expr1>>,<<expr2>>,<<expr3>>) 

第一個表達式僅被評估一次。

在while循環:

while(<<expr1>>) 

表達式獲得在每個貫穿評價。

多次重新定義相同的變量沒有任何意義。