2013-07-23 17 views
5

Czy istnieje sposób na utworzenie konstruktora klasy shared w VB.NET? Robię to cały czas w C# w następujący sposób, ale nie mogę sprawić, żeby działało w VB.NET.Statyczny konstruktor klasy w VB

static class someClass 
{ 
    public static string somePublicMember; 

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

Po wykonaniu następującego kodu zostanie wywołany konstruktor.

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

Czy (shared) Klasa static nawet konstruktor w VB.NET?

+0

możliwe duplikat [Jak wdrożyć konstruktora klasy w Visual Basic?] (Http://stackoverflow.com/questions/3279106/how-to-implement-class-constructor-in-visual-basic) –

+1

'Shared Sub New()' – asawyer

Odpowiedz

1

Nie można zadeklarować wspólną klasę w VB.NET. Masz dwie opcje:

  • użyć modułów. W takim przypadku potrzebujesz pewnej liczby Init, z którą musisz zadzwonić zanim cokolwiek innego.
  • używać regularnych zajęć ze wspólnymi metodami (moje preferencje), następnie można udostępnić nowe sub.
+0

Tego właśnie się bałem. Jeśli używasz zwykłej klasy z metodą wspólną, czy dostęp do członków automatycznie wywoła udostępniony nowy sub? – AppFzx

+0

@AppFzx: Tak, właśnie dlatego wolę takie podejście do modułów. – Neolisk

+0

@AppFzx Czy przeczytałeś link podany w mojej odpowiedzi? – Ehsan

2

Czy próbowałeś:

Class someClass 

    Public Shared somePublicMember As String 

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

To nie jest jednak klasa dzielona ... – AppFzx

1

Niby wygląda jak normalny konstruktor w VB.NET:

Shared Sub New() 

End Sub 
+0

Nie ma tu jednak deklaracji klasy współdzielonej ... – AppFzx

+0

@AppFzx: nie może być. [VB.NET go nie obsługuje] (http://social.msdn.microsoft.com/Forums/en-US/aa2427e3-a57f-4c38-adb9-0496d7e3eb9a/static-class-equivalent-in-vbnet). – Neolisk

+0

@Neolisk, jeśli chcesz powtórzyć swoją odpowiedź, zaakceptuję to. Nie wiem, gdzie to poszło. Właśnie miałem kliknąć, aby zaakceptować. – AppFzx

14

Przeczytaj dokumentację here. W tym momencie można wykonać:

Shared Sub New() 
... 
End Sub 

Zostanie on wywołany. Z MSDN:

  1. Współdzielone konstruktory są uruchamiane przed utworzeniem dowolnego wystąpienia typu klasy.

  2. Współdzielone konstruktory są uruchamiane przed uzyskaniem dostępu do jakichkolwiek elementów wystąpień typu struktury lub przed jawnym wywołaniem dowolnego konstruktora typu konstrukcji. Wywołanie niejawnego parametru pomniejszonego konstruktora utworzonego dla struktur nie spowoduje uruchomienia współdzielonego konstruktora.

  3. Współdzielone konstruktory są uruchamiane przed odniesieniem do dowolnego elementu współużytkowanego typu.

  4. Współdzielone konstruktory są uruchamiane przed załadowaniem typów wywodzących się z typu.

  5. Współdzielony konstruktor nie będzie uruchamiany więcej niż jeden raz podczas pojedynczego uruchomienia programu .

+0

Bardzo dobre punkty, +1. – Neolisk

Powiązane problemy