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
一样访问它们是否正确。
答案 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方法,以及所需的任何额外逻辑),但它“看起来像”变量本身,这简化了使用。