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看到我的更新希望会有所帮助