在“while”循环中,为什么可以';t我将条件中的变量声明为“for”循环中的变量

本文关键字:变量 循环 条件 for 声明 为什么 while | 更新日期: 2023-09-27 18:06:11

可能重复:
为什么可以';我们不是在while循环中定义一个变量吗?

我想简化以下代码:

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

进入:

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

但失败了。

然而,我们肯定可以在for:中做到这一点

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

在“while”循环中,为什么可以';t我将条件中的变量声明为“for”循环中的变量

您仍然可以使用for:

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

由于while循环接受一个条件,因此每次运行循环时都要声明一个新的line实例,因为每次通过循环都会评估该条件。

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

在for循环中:

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

第一个表达式只计算一次。

在一段时间内循环:

while(<<expr1>>)

每次运行时都会对表达式进行求值。

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

我相信原因是您将多次声明变量(每次循环(。

在这里更详细地询问和回答:相同的问题