2010-02-21 42 views
1

在VB中静态意味着什么?静态在VB中意味着什么?

编辑 - 代码示例参考

Module Module1 

    Sub Main() 
     Dim a = New Foo 
     Dim b = New Foo 
     Console.WriteLine(a.Boom) 
     Console.WriteLine(a.Boom) 
     Console.WriteLine(a.Boom) 
     Console.WriteLine(b.Boom) 
    End Sub 

End Module 


Class Foo 
    Function Boom() As Integer 
     Static callCount As Integer = 0 
     callCount += 1 
     Return callCount 
    End Function 
End Class 

回答

4

它是具有本地的方法领域的一种方式。基本上,价值在呼叫之间保持,但在班级的其他部分无法访问。有关实施信息,请参见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 
+0

+1但请提供代码示例。 – Dario 2010-02-21 09:20:40

+0

没有。我刚刚检查过,它绝对不像共享字段。如果我在编辑的问题中运行代码,我会得到“1,2,3,1”。 – 2010-02-21 09:27:58