使用 VB.Net 在 class 内设置共享对象属性
Setting shared object properties inside class using VB.Net
如果我有一个带有共享 属性 的 class,并且属性值是在 class 过程之外创建的新对象实例 (sub/function),我还可以在过程之外设置该共享对象的属性吗?
Public Class Person
Private Shared DataItem = New DataItem
DataItem.Value = 10 ' Assuming Value is a Public Property
End Class
我认为在其他语言中,例如 Java,您可以为 运行 创建一个静态块并设置静态值:static {}
但不确定 VB 中是否可以...
编辑:基本上 VB 等同于 Java 中的静态初始值设定项。似乎找不到这方面的任何信息。
是的,你可以。如果您希望可以在 Person
class 之外访问您的 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 方法 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:
- 共享构造函数 运行 在创建 class 类型的任何实例之前。
- 共享构造函数 运行 在访问结构类型的任何实例成员之前,或在显式调用结构类型的任何构造函数之前。调用为结构创建的隐式参数less构造函数不会导致共享构造函数运行.
- 共享构造函数 运行 在任何类型的共享成员被引用之前。
- 共享构造函数 运行 在加载派生自该类型的任何类型之前。
- 共享构造函数在程序的单次执行期间不会 运行 多次。
如果我有一个带有共享 属性 的 class,并且属性值是在 class 过程之外创建的新对象实例 (sub/function),我还可以在过程之外设置该共享对象的属性吗?
Public Class Person
Private Shared DataItem = New DataItem
DataItem.Value = 10 ' Assuming Value is a Public Property
End Class
我认为在其他语言中,例如 Java,您可以为 运行 创建一个静态块并设置静态值:static {}
但不确定 VB 中是否可以...
编辑:基本上 VB 等同于 Java 中的静态初始值设定项。似乎找不到这方面的任何信息。
是的,你可以。如果您希望可以在 Person
class 之外访问您的 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 方法 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:
- 共享构造函数 运行 在创建 class 类型的任何实例之前。
- 共享构造函数 运行 在访问结构类型的任何实例成员之前,或在显式调用结构类型的任何构造函数之前。调用为结构创建的隐式参数less构造函数不会导致共享构造函数运行.
- 共享构造函数 运行 在任何类型的共享成员被引用之前。
- 共享构造函数 运行 在加载派生自该类型的任何类型之前。
- 共享构造函数在程序的单次执行期间不会 运行 多次。