vb.net - 使用 VB.Net 在类内设置共享对象属性

标签 vb.net shared

如果我有一个具有共享属性的类,并且属性值是在类过程(子/函数)外部创建的新对象实例,我是否也可以在过程外部设置该共享对象的属性?

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:

  1. 共享构造函数在创建类类型的任何实例之前运行。
  2. 共享构造函数在访问结构类型的任何实例成员之前或显式调用结构类型的任何构造函数之前运行。调用为结构创建的隐式无参数构造函数不会导致共享构造函数运行。
  3. 共享构造函数在引用任何类型的共享成员之前运行。
  4. 共享构造函数在加载从该类型派生的任何类型之前运行。
  5. 共享构造函数在程序的单次执行期间不会运行多次。

关于vb.net - 使用 VB.Net 在类内设置共享对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44200389/

相关文章:

c - 如何在任务/线程之间共享数据而不耦合它们?

vb.net - 在 vb.net 中动态更改按钮背景颜色

vb.net - 删除文本框中的结束字符而不重写所有数据

html - 如何在 Web 浏览器(html 格式)中打开本地 .msg 文件并显示嵌入的图片

java - 在java中使用非jni native 库

shared - D中的"Shared"和"__gshared"关键字

c++ - Automake : what are the valid values for *_la_LDFLAGS in Makefile. 上午?

vb.net - 将大文件存储到SQLite的内存不足错误

vb.net - 无法通过vb.net应用程序运行Exchange Powershell

Git,如何将裸机更改为共享仓库?