C# 語言作為一種強類型的語言,其變量的作用範圍得到了嚴格的限定。在别的語言中,比如 javascript、vbscript 中,變量的作用域隻限定到函數和過程内部,但是在 C# 中所有代碼塊内部定義的變量都隻能在本局部範圍内使用。比如:
for(){……}
while(){……}
if(){……}else{……}
等。C# 的“代碼塊”要比别的語言仔細的多。
比如以下 C# 代碼:
using System;
using System.Collections.Generic;
using System.Text;
namespace Var
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 6; i++ )
{
int a = 9;
a *= i;
Console.WriteLine(a);
}
Console.WriteLine(a);
Console.ReadLine();
}
}
}
由于 Console.WriteLine(a); 一句使用的變量 a 是在 for 代碼塊内部定義的,是以在編譯的時候會報告以下錯誤:
Error:The name 'a' does not exist in the current context
将 Console.WriteLine(a); 一句注釋掉後,程式運作結果為:
9
18
27
36
45
但是在 javascript 腳本中:
<Script language="javascript">
for (var i = 0; i < 6; i++ )
{
var a = 9;
a *= i;
document.write (a + "<br>");
}
document.write ("forOUT: " + a);
</Script>
運作結果:
9
18
27
36
45
forOUT: 45
因為變量 a 在 for 循環裡已經定義并指派了,是以在後續的語句中就可以使用它。
在 ASP 中的 vbscript 中也一樣:
<% Option explicit %>
<%
dim i
for i = 0 to 5
dim a
a = 9
a = a*i
response.write a & "<br>"
next
response.write "forOUT: " & a
%>
運作結果:
9
18
27
36
45
forOUT: 45
注意: 以上所有示例中,for 循環中似乎每個循環都在定義變量 a,但是并不報重複定義變量的錯誤。
電腦學習網 http://www.why100000.com
張慶 2007.5.20