我想简化以下代码:
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 :(得分: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