请帮助我理解为什么以下语句会产生编译错误: 在while语句中定义变量是错误的吗?
while((string _l = _sr.ReadLine()) != null){
_sb.AppendLine(_l);
}
//无效的表达式术语'string'
答案 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?