它是具有本地的方法领域的一种方式。基本上,价值在呼叫之间保持,但在班级的其他部分无法访问。有关实施信息,请参见Static Local Variables in VB.NET。
编辑:乔纳森,你是对的,领域不必共享/静态。如果函数/子被声明为共享,它将是一个共享/静态字段。否则,它将是一个实例字段。无论哪种方式,它在呼叫中持续存在,而且在方法本地持续存在。下面的例子(继续a theme)显示两个行为明确:
Class Fibonacci
Public Function FibonacciInstance() as Integer
Static i as Integer = -1
Static j as Integer = 1
Dim k as Integer
k = i + j
i = j
j = k
return k
End Function
Public Shared Function FibonacciShared() as Integer
Static i as Integer = -1
Static j as Integer = 1
Dim k as Integer
k = i + j
i = j
j = k
return k
End Function
Shared Sub Main()
Dim d as Integer
Dim a = New Fibonacci
Dim b = New Fibonacci
For d = 0 to 10
System.Console.WriteLine("a.FibonacciInstance: " & a.FibonacciInstance())
System.Console.WriteLine("b.FibonacciInstance: " & b.FibonacciInstance())
System.Console.WriteLine("a.FibonacciShared: " & a.FibonacciShared())
System.Console.WriteLine("b.FibonacciShared: " & b.FibonacciShared())
Next d
End Sub
End Class
+1但请提供代码示例。 – Dario 2010-02-21 09:20:40
没有。我刚刚检查过,它绝对不像共享字段。如果我在编辑的问题中运行代码,我会得到“1,2,3,1”。 – 2010-02-21 09:27:58