如果我有一个具有共享属性的类,并且属性值是在类过程(子/函数)外部创建的新对象实例,我是否也可以在过程外部设置该共享对象的属性?
Public Class Person
Private Shared DataItem = New DataItem
DataItem.Value = 10 ' Assuming Value is a Public Property
End Class
我认为在其他语言中,例如Java,您可以创建一个静态 block 来运行和设置静态值:static {}
不确定是否可以在 VB 中做到这一点...
编辑:基本上相当于 Java 中静态初始化器的 VB。似乎找不到任何相关信息。
最佳答案
是的,你可以。如果您希望在 Person
类之外可以访问 DataItem 变量,则需要对代码进行一些更改。您需要将私有(private)共享数据项
更改为公共(public)共享数据项
或 friend 共享数据项
。如果您想限制读取或写入的访问权限,您可以使用 Person
中的方法来授予对特定字段的访问权限。例如:
Public Class Person
Private Shared DataItem = New DataItem
Public Sub SetVariable(ByVal value As Int)
DataItem.Value = value
End Sub
End Class
如果你想在父类上共享方法,你可以这样做:
Public Class Person
Private Shared DataItem = New DataItem
Shared Sub New()
DataItem = New DataItem()
End Sub
End Class
更多详细信息,https://msdn.microsoft.com/en-us/library/aa711965(VS.71).aspx 。 来自 MSDN:
- 共享构造函数在创建类类型的任何实例之前运行。
- 共享构造函数在访问结构类型的任何实例成员之前或显式调用结构类型的任何构造函数之前运行。调用为结构创建的隐式无参数构造函数不会导致共享构造函数运行。
- 共享构造函数在引用任何类型的共享成员之前运行。
- 共享构造函数在加载从该类型派生的任何类型之前运行。
- 共享构造函数在程序的单次执行期间不会运行多次。
关于vb.net - 使用 VB.Net 在类内设置共享对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44200389/