PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VB.NET - statischer Konstruktor?


Monger
2008-01-29, 17:31:43
Blöde Frage, aber auch nach langem Gegoogle finde ich darauf keine Antwort:

Kennt VB.NET einen statischen Konstruktor? Also etwas, worin ich statische Attribute initialisieren kann?

In C# sieht das ja etwa so aus:


static Klassenname(){
// ...
}

Gibt es das in VB.NET auch?

Der_Donnervogel
2008-01-29, 19:22:13
Man kann sowas machen und zwar mit Shared Sub New()

Ich vermute mal sowas ist gesucht:

Public Class Class1
Private Shared a As Integer
Private b As Integer

Shared Sub New()
a = 5
End Sub

Sub New(ByVal val As Integer)
b = val
End Sub

Public Sub zeig()
MsgBox(a & " " & b)
End Sub

End Class

Monger
2008-01-29, 19:48:59
Genau das wollte ich wissen! Dankeschön! :)

FlashBFE
2008-01-29, 22:56:45
Du solltest aber dazuwissen, dass du bei einer Shared New keine Parameter benutzen kannst. Falls du nur einzelne Variablen brauchst, die ihren Zustand behalten sollen, ist es sinnvoller, die Variablen selbst mit Static Dim X As Y zu deklarieren.

Monger
2008-01-29, 23:12:35
Ja, schon klar. Was sollte ein statischer Konstruktor auch an Parametern haben?

Drüber gefallen bin ich in diesem speziellen Fall:


private shared endings as string() = {"png", "lst", "bmp"}

Ein Array ist wunderschön zu initialisieren - hat aber sehr wenige Methoden. Unter anderem fehlt mir da die "IndexOf" Methode von List.


private shared endings as List(of String) = ???

Das hier geht aber eben leider nicht, eine Liste lässt sich nicht einfach so initialisieren. Genau da kann ich dann den statischen Konstruktor gut gebrauchen.

Der_Donnervogel
2008-01-31, 00:15:35
private shared endings as List(of String) = ???

Das hier geht aber eben leider nicht, eine Liste lässt sich nicht einfach so initialisieren. Genau da kann ich dann den statischen Konstruktor gut gebrauchen.
Man könnte das schon so in der Art machen, wenn man wollte:
Private Shared endings As New List(Of String)(New String() {"png", "lst", "bmp"})
Dann hätte man die Einträge in einer Liste drinn.