【Notes】结构变量中的作用域
static void main()
{
int i;
for(i=0;i<10;i++)
{
string text="Line"+Covert.ToString(i);
Console.WriteLine("{0}",text);
}
Console.WriteLine("Last text output in loop:{0}",text);
Console.ReadKey();
}
{
int i;
for(i=0;i<10;i++)
{
string text="Line"+Covert.ToString(i);
Console.WriteLine("{0}",text);
}
Console.WriteLine("Last text output in loop:{0}",text);
Console.ReadKey();
}
字符串常量text是for循环里面的局部变量,这段代码不能编译,在循环外部调用了该变量,超过了循环的作用域,修改代码如下:
1 static void main()
2 {
3 int i;
4 string text;
5 for(i=0;i<10;i++)
6 {
7 string text="Line"+Covert.ToString(i);
8 Console.WriteLine("{0}",text);
9 }
10 Console.WriteLine("Last text output in loop:{0}",text);
11 Console.ReadKey();
12 }
2 {
3 int i;
4 string text;
5 for(i=0;i<10;i++)
6 {
7 string text="Line"+Covert.ToString(i);
8 Console.WriteLine("{0}",text);
9 }
10 Console.WriteLine("Last text output in loop:{0}",text);
11 Console.ReadKey();
12 }
这段代码也会失败,原因是变量必须在使用前初始化,text是在for循环中初始化的,在循环块儿退出后值就丢失了,修改代码如下:
1 static void main()
2 {
3 int i;
4 string text="";
5 for(i=0;i<10;i++)
6 {
7 string text="Line"+Covert.ToString(i);
8 Console.WriteLine("{0}",text);
9 }
10 Console.WriteLine("Last text output in loop:{0}",text);
11 Console.ReadKey();
12 }
2 {
3 int i;
4 string text="";
5 for(i=0;i<10;i++)
6 {
7 string text="Line"+Covert.ToString(i);
8 Console.WriteLine("{0}",text);
9 }
10 Console.WriteLine("Last text output in loop:{0}",text);
11 Console.ReadKey();
12 }