C# 在“变量”中定义迭代变量有什么区别;至于;声明与之前的声明?

C# 在“变量”中定义迭代变量有什么区别;至于;声明与之前的声明?,c#,for-loop,C#,For Loop,我想知道在使用它的语句之前(外部)定义一个迭代变量有什么区别,如下所示 int i; for(i=1;...) …反对在for语句中定义变量,如下所示: for(int i=1;...) 它们有不同的范围 预声明,您可以在for循环外部访问i int i; for(i=1;...) { // i accessible here } // i accessible here i = 10; // will work and update i outside

我想知道在使用它的
语句之前(外部)定义一个迭代变量有什么区别,如下所示

    int i;
    for(i=1;...)
…反对在
for
语句中定义变量,如下所示:

    for(int i=1;...)

它们有不同的范围

预声明,您可以在for循环外部访问
i

int i;
for(i=1;...)
 {
    // i accessible here
 }
 // i accessible here
i = 10; // will work and update i outside for loop
 for(int i=1;...)
  {
     // i accessible here
  }
   // but not accessible here
 i = 10; // won't work outside for loop
内联声明,在这种情况下,您只能访问for循环中的
i

int i;
for(i=1;...)
 {
    // i accessible here
 }
 // i accessible here
i = 10; // will work and update i outside for loop
 for(int i=1;...)
  {
     // i accessible here
  }
   // but not accessible here
 i = 10; // won't work outside for loop

最显著的区别可能是范围:在第一个示例中。像
i
这样的局部变量在定义它们的块内可见。因此,在第一个示例中,
i
将在
for
循环之后继续存在(并具有其当时的当前值),而在第二种情况下,它将仅在
for
循环和循环体中有效。

差异在变量范围内。当您在for循环外声明变量时(如第一个示例中),它将在循环内和循环外均可访问

int i;
for(i=1; i<100; i++)
{ 
    // do great things
}

i = 10000; // Works fine
inti;

对于(i=1;i而言,差异在变量i的范围内。在第一种情况下,假设您的代码是:

void SomeFunction(){
    int i;
    for(..){
        .. 
        // i is available here
    }
    // And here too
}
而在第二种情况下,它仅在循环块{}.Outside内可用,它将给出错误

 void SomeFunction(){
    for(int i;..){
        .. 
        // i is available here
    }
    // But not here
}

这个问题的答案其实很简单。
inti;for(i=1;)
for(int i=1;)
。两者的区别在于,一个声明
i
for
循环的外部,而另一个声明
i
在内部。任何一种方法都是完全正确的,都会在程序中产生相同数量的循环。我希望这能有所帮助


编辑:我还应该提到,如果您在
for
循环的内部声明
I
,它将无法在
for
循环的外部访问。

在第二种情况下,您无法访问
I
for loop外部,但在第一种情况下,您可以在
for
循环的外部或之后访问。这意味着两者都有不同的作用域谢谢大家的帮助。一定有一些不同,我的老师告诉我这是有区别的。你确定除了预声明和内联声明之外,这两者之间没有任何区别吗?@user3607864看到我的更新希望会有所帮助