循环的问题,请教

来源:百度知道 编辑:UC知道 时间:2024/07/04 06:52:08
为什么上面的码出错,下面的不错,在我看到int i = 0;都被重定义了.
int i = 0;
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
----------------------------------------------------------
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}

for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}

int i = 0;
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
这里首先定义了一个全局的i,对于for循环体,他是继承了全局变量的,所有你再次定义i的时候会报错。
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}

for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
这里的每个i ,只作用于每一个for循环体,当一个循环体结束时,它内部定义的变量也就自动作废了,所以这里不会出错。也就是第一个for结束后,它自己定义的i已经不存在了。

你去看看作用域的概念吧 每个变量都有自己的作用域 同一个域不能有同样的变量名
对于第一段代码 int i=0的作用域和for循环里的int i的作用域重叠了
第二段就是在不同的域里 所以是合法的

上边的代码将整数i的值定义为0,循环中的i却是个变量,所以有矛盾。

下面的代码,i是被定义为整型,所以在循环中不会出错。