繁体   English   中英

VB中的静态类构造函数

[英]Static class constructor in VB

有没有办法在 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 中具有构造函数吗?

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

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 ,您需要先调用它。
  • 使用具有共享方法的常规类(我的偏好),然后您可以共享子新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM