C# 在“while”循环中,为什么可以';我不能将条件中的变量声明为'for'循环中的变量吗?
可能重复:C# 在“while”循环中,为什么可以';我不能将条件中的变量声明为'for'循环中的变量吗?,c#,C#,可能重复: 我想简化以下代码: string line; while ((line = sr.ReadLine()) != null) 进入: 但失败了 但是,我们当然可以在中为这样做: for (int i=0, int n=50;i<n;i++) for (string line; (line = sr.ReadLine()) != null; ) ... for(int i=0,int n=50;i我认为原因是您将多次声明变量(循环的每次过程) 此处更详细地询问和回答
我想简化以下代码:
string line;
while ((line = sr.ReadLine()) != null)
进入:
但失败了
但是,我们当然可以在中为这样做:
for (int i=0, int n=50;i<n;i++)
for (string line; (line = sr.ReadLine()) != null; )
...
for(int i=0,int n=50;i我认为原因是您将多次声明变量(循环的每次过程)
此处更详细地询问和回答:由于在循环接受一个条件时,这将在每次运行循环时声明行的一个新实例,因为每次通过循环都会评估该条件
它在for
循环中工作,因为初始值设定项(三个分号分隔的表达式中的第一个)在开始时只运行一次;条件是第二个表达式。在for
循环的条件表达式中声明变量也会遇到同样的问题。在for循环中:
for(<<expr1>>,<<expr2>>,<<expr3>>)
(,)的
第一个表达式只计算一次
在while循环中:
while(<<expr1>>)
while()
每次运行时都会对表达式求值
多次重新定义同一个变量是没有意义的。您仍然可以使用for
:
for (int i=0, int n=50;i<n;i++)
for (string line; (line = sr.ReadLine()) != null; )
...