原文地址: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來局部化於迴圈代碼內,因為我們很少在外部的代碼中訪問這個計數器。