Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在“while”循环中,为什么可以';我不能将条件中的变量声明为'for'循环中的变量吗?_C# - Fatal编程技术网

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; )
    ...