14

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

static class someClass
{
    public static string somePublicMember;

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

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

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

static( ) 类甚至可以shared在 VB.NET 中具有构造函数吗?

4

5 回答 5

25

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

Shared Sub New()
...
End Sub

它将被调用。来自 MSDN:

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

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

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

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

  5. 在程序的单次执行期间,共享构造函数不会运行多次。

于 2013-07-23T14:57:02.763 回答
4

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

Shared Sub New()

End Sub
于 2013-07-23T14:57:00.180 回答
3

你有没有尝试过:

Class someClass

    Public Shared somePublicMember As String

    Shared Sub New()
        messageBox.show("I just constructed a static class")
    End Sub
End Class
于 2013-07-23T14:55:47.803 回答
3

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
于 2019-01-15T12:11:18.313 回答
1

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

  • 使用模块。在这种情况下,您需要 some Init,您需要先调用它。
  • 使用带有共享方法的常规类(我的偏好),然后您可以共享新的子。
于 2013-07-23T14:56:21.810 回答