Ich bin auf ein Problem gestoßen, bei dem ich eine Instanz der Klasse in ihrem statischen Konstruktor brauche. Ich glaubte, dass es nicht möglich war, also versuchte ich Folgendes:
%Vor%Zu meiner Überraschung funktioniert es - die Ausgabe ist "etwas Text". Ich glaubte, dass der statische Konstruktor ausgeführt und abgeschlossen werden muss, bevor Instanzen der Klasse erstellt werden können. Diese Antwort zeigt, dass dies nicht unbedingt der Fall ist. Bedeutet das, dass statische und Instanzkonstruktoren unabhängig voneinander sind? Und schließlich ist das sicher (Erstellen von Instanzen im statischen Konstruktor)?
ps. Lassen Sie uns die Tatsache ignorieren, dass dies durch einen anderen Ansatz vermieden werden kann.
Alles, was die Spezifikation sagt, ist, dass der statische Konstruktor vor jeder Instanz von aufgerufen wird Die Klasse ist erstellt. Es sagt aber nichts über die Tatsache aus, dass dieser Konstruktor enden muss:
Ein statischer Konstruktor wird verwendet, um alle statischen Daten oder zu initialisieren Führen Sie eine bestimmte Aktion aus, die nur einmal ausgeführt werden muss. Es wird automatisch aufgerufen, bevor die erste Instanz erstellt wird statische Mitglieder werden referenziert.
Sie können Instanzen der Klasse im statischen Konstruktor perfekt erstellen, und das ist sicher.
Statischer Konstruktor, der automatisch aufgerufen wird, bevor die erste Instanz erstellt wird oder alle statischen Elemente werden referenziert alle statischen Felder werden referenziert. Wenn Ihre Anwendung ausgeführt wurde und Sie auf Foo
zugegriffen haben, wurde der statische Konstruktor ausgeführt und Ihre Zeichenfolge wurde initialisiert.
Ist es sicher? Als solches schadet es nicht. Sie werden nur einmal ausgeführt.
Informationen zu diesem Thema finden Sie unter Statische Klassen und statische Klassenmitglieder auf MSDN
Tags und Links c#