原文地址:http://blog.sina.com.cn/s/blog_67299aec0100rxng.html
一般情况下的变量作用域与C语言中的一样,但是需要注意的是C#中没有全局变量,
-----一个变量的作用域包含定义它的代码块和直接嵌套在其中的代码块-----看下面的例子:
public static void Main()
{
for ( int i = 0; i < 10;i++ )
{
string text = "Line" + Convert.ToString(i);
Console.WriteLine(text);
}
// Console.WriteLine(text);
}
这里的i的作用域,仅在于这个for循环,text的作用域仅在于for循环体内,如果改成下面:
public static void Main()
{
string text;
int i;
for ( i = 0; i < 10;i++ )
{
text = "Line" + Convert.ToString(i);
Console.WriteLine("is{0}",text);
}
Console.WriteLine("{0}",text);
}
这个时候也会报错,因为string型变量text在在循环体中初始化的,这个值是局部值,所以会报错,所以应该改成下面的:
public static void Main()
{
string text=" ";
int i;
for ( i = 0; i < 10;i++ )
{
text = "Line" + Convert.ToString(i);
Console.WriteLine("is{0}",text);
}
Console.WriteLine("{0}",text);
}
在使用时候对其初始化,有一个“最佳实践方式”:
一般情况下,最好在声明和初始化所有的变量之后,再在代码中使用它们,不要在循环体内对一个代码中的变量进行初始化
有一个例外是循环变量声明为循环块的一部分,例如:
for ( int i = 0; i < 10;i++ )
{------- }
使用i来局部化于循环代码内,因为我们很少在外部的代码中访问这个计数器。