0
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.

4

2 回答 2

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'

我还想补充一点,当您拥有一个可以向您推荐具有 Intellisense 功能的类的成员的 IDE 时,使用属性在可用性方面会更好。您只有一项(属性名称)要搜索,而不是两个方法名称,相关但按字母顺序分散。(获取状态,保存状态)

于 2013-09-24T18:49:19.590 回答
0

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

通常,你会通过一个Property而不是一对方法来做到这一点。在内部,属性只是两种方法(用于获取和设置值的 getter 和 setter 方法,以及所需的任何额外逻辑),但它“看起来像”变量本身,这简化了使用。

于 2013-09-24T18:47:02.150 回答