int i;
string text;
for(i = 0 ; i < 10; i++)
{
text = "Line"+Convert.ToString(i);
Console.WriteLine("{0}",text);
}
Console.WriteLine("Last text in loop :{0}",text);
这段代码编译也会失败,变量text必须在使用前进行声明和初始化,而text是在循环中初始化的,赋给text的值在循环退出后就丢失了。
int i;
string text="";
for(i = 0 ; i < 10; i++)
{
text = "Line"+Convert.ToString(i);
Console.WriteLine("{0}",text);
}
Console.WriteLine("Last text in loop :{0}",text);
只声明一个简单类型,并不会产生变化,并没有给变量分配内存。变量只有在赋值后才占用一块内存。如果这种占用内存的行为只发生在循环中,该值实际只是一个局部变量,在循环的外部就会超出其作用域。在循环外部赋值可以确保该值是主体代码的局部值,在循环内部仍处于该值的作用域中。
原文:http://568464209.blog.51cto.com/7726521/1726403