如果我有一个带有共享属性的类,并且属性值是在类过程(子/函数)之外创建的新对象实例,我还可以在过程之外设置该共享对象的属性吗? / p>
Public Class Person
Private Shared DataItem = New DataItem
DataItem.Value = 10 ' Assuming Value is a Public Property
End Class
我认为在其他语言中,例如Java,您可以创建一个静态块来运行和设置静态值:static {}
不确定你是否可以在VB中做到这一点......
编辑:基本上是VB中的静态初始化器的VB等价物。似乎无法找到任何相关信息。
答案 0 :(得分:2)
是的,你可以。如果希望在Person
类之外访问DataItem变量,则需要对代码进行一些更改。您需要将Private Shared DataItem
更改为Public Shared DataItem
或Friend Shared DataItem
。如果要限制读取或写入的可访问性,可以使用Person
中的方法来访问特定字段。例如:
Public Class Person
Private Shared DataItem = New DataItem
Public Sub SetVariable(ByVal value As Int)
DataItem.Value = value
End Sub
End Class
如果你想在父类上使用Shared方法,你可以这样做:
Public Class Person
Private Shared DataItem = New DataItem
Shared Sub New()
DataItem = New DataItem()
End Sub
End Class
此处更详细,https://ocaml.org/learn/tutorials/99problems.html。 来自MSDN: