VB中的静态类构造函数

时间:2013-07-23 14:53:10

标签: c# vb.net

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

5 个答案:

答案 0 :(得分:17)

阅读文档here。你可以做到

Shared Sub New()
...
End Sub

它将被调用。来自MSDN:

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

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

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

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

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

答案 1 :(得分:3)

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

Shared Sub New()

End Sub

答案 2 :(得分:2)

你试过了吗?

Class someClass

    Public Shared somePublicMember As String

    Shared Sub New()
        messageBox.show("I just constructed a static class")
    End Sub
End Class

答案 3 :(得分:1)

您无法在VB.NET中声明共享类。您有两种选择:

  • 使用模块。在这种情况下,您需要一些Init,您需要先调用它。
  • 使用带有共享方法的常规类(我的偏好),然后你就可以拥有共享新的。

答案 4 :(得分:0)

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

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

您在VB.Net中的等效代码为:

function GetSerial: string;
begin
  Result := JStringToString (TJBuild.JavaClass.SERIAL);
end;