在`while`循环中,为什​​么我不能在`for`循环中声明变量?

时间:2011-08-21 22:49:39

标签: c#

  

可能重复:
  why can't we define a variable inside a while loop?

我想简化以下代码:

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

成:

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

但失败了。

但是,我们肯定可以在for

中执行此操作
for (int i=0, int n=50;i<n;i++)

4 个答案:

答案 0 :(得分:9)

您仍然可以使用for

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

答案 1 :(得分:2)

由于while循环采用了一个条件,所以每次运行循环时都会声明一个line的新实例,因为每次循环都会评估条件。

它在for循环中工作,因为初始化程序(三个以分号分隔的表达式中的第一个)在开始时只运行一次;条件是第二个表达式。尝试在for循环的条件表达式中声明变量时会遇到同样的问题。

答案 2 :(得分:2)

在for循环中:

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

第一个表达式只被评估一次。

在while循环中:

while(<<expr1>>)

每次运行时都会对表达式进行评估。

多次重新定义相同的变量是没有意义的。

答案 3 :(得分:1)

我相信原因是你会多次声明变量(循环的每次传递)。

在此处更详细地询问并回答:Same question