在Visual Basic.NET中正确使用共享变量

时间:2013-09-24 18:43:19

标签: vb.net oop

Class klass

   Private Shared state As Boolean


   Public Sub savestate (ByVal value As Boolean)
       state = value
   End Sub

   Public Function getstate () As Boolean
      Return state 
   End Function

   Private Sub work()
      savestatet(false)
   End Sub 

   Private Sub work2()
     If getstate()
       ....

   End Sub
 ...
End Class

以这种方式使用共享变量或仅像state = false, and if state... do something一样访问它们是否正确。

2 个答案:

答案 0 :(得分:1)

通常这是使用属性来实现更清晰的语法,但是,使用一些get / set函数本身并没有错。

Private Shared internalState As Boolean

Public Property State() As Boolean
    Get
      Return internalState
    End Get
    Set(ByVal value As Boolean)
      internalState = value
    End Set
End Property

但请记住,共享变量在类的每个实例之间都是“共享的”。所以,如果你宣布

Dim c1 = new klass()
c1.State = True

Dim c2 = new klass()
Console.WriteLine(c2.ToString)  ' Prints True'

我还想补充一点,当你有一个IDE可以建议你有一个具有Intellisense功能的类的成员时,使用属性在可用性方面更好。您只有一个项目(属性名称)要搜索,而不是两个方法名称,相关但按字母顺序分散。 (getstate,savestate)

答案 1 :(得分:0)

  

以这种方式使用共享变量是否正确?

通常情况下,您可以通过Property而非一对方法执行此操作。在内部,属性只是两种方法(获取和设置值的getter和setter方法,以及所需的任何额外逻辑),但它“看起来像”变量本身,这简化了使用。