VB中的静态类构造函数

本文关键字:构造函数 静态类 VB | 更新日期: 2023-09-27 18:24:21

有没有办法在VB.NET中为shared类创建构造函数?我一直在C#中这样做,但我似乎无法在VB.NET.中使用它

static class someClass
{
    public static string somePublicMember;
    static someClass()
    {
        messageBox.show("I just constructed a static class");
    }
}

当执行以下代码时,将调用构造函数。

...
someSillyClass.someSillyPublicMember = 42;
...

staticshared)类甚至可以在VB.NET中有构造函数吗?

VB中的静态类构造函数

阅读此处的文档。在你可以做

Shared Sub New()
...
End Sub

它将被调用。来自MSDN:

  1. 共享构造函数在创建类类型的任何实例之前运行。

  2. 共享构造函数在访问结构类型的任何实例成员之前运行,或者在显式调用结构类型的任意构造函数之前运行调用为结构创建的隐式无参数构造函数不会导致共享构造函数运行

  3. 共享构造函数在引用该类型的任何共享成员之前运行。

  4. 共享构造函数在加载从该类型派生的任何类型之前运行。

  5. 共享构造函数在一次执行程序

看起来有点像VB.NET中的普通构造函数:

Shared Sub New()
End Sub

您尝试过吗:

Class someClass
    Public Shared somePublicMember As String
    Shared Sub New()
        messageBox.show("I just constructed a static class")
    End Sub
End Class

VB.net中没有静态/共享类。

然而,有些模块提供了类似的功能,因此您将无法实例化它们。

你在VB.Net中的等效代码将是(使用VS2017测试):

Module someClass
    Public somePublicMember As String
    Sub New()
        messageBox.show("I just constructed a static class (not really) [sic]")
    End Sub
End Module

您不能在VB.NET中声明共享类。您有两个选项:

  • 使用模块。在这种情况下,您需要一些Init,您需要先调用它,然后再执行其他操作
  • 使用带有Shared方法的常规类(我的偏好),然后就可以共享sub-new了