while循环中的C#语法 - 不允许变量定义?

时间:2014-02-13 20:28:22

标签: c#

请帮助我理解为什么以下语句会产生编译错误: 在while语句中定义变量是错误的吗?

while((string _l = _sr.ReadLine()) != null){
            _sb.AppendLine(_l);
}

//无效的表达式术语'string'

2 个答案:

答案 0 :(得分:5)

是的,你需要在循环之外声明它:

string _l;
while((_l = _sr.ReadLine()) != null){
            _sb.AppendLine(_l);
}

规范将while语句定义为:

  

8.8.1 while语句

     

while-statement:

     

while(boolean-expression)embedded-statement

由于变量声明不是布尔表达式,因此不能将它们置于while循环的条件中。

答案 1 :(得分:1)

找到类似的问题和答案:

“由于while循环采用了一个条件,因此每次运行循环时都会声明一个新的line实例,因为每次循环都会对条件进行求值。”

In a `while` loop, why can't I declare variable in the condition as in a `for` loop?