Wie Sie von meinem Spitznamen sehen können, bin ich Anfänger, der wirklich über Singleton Muster lernt, wo ich ein Problem habe. Bevor ich gelernt habe, dass statische Konstruktoren immer vor den Standardkonstruktoren ausgeführt werden, aber in diesem Code ist das Ergebnis anders, zuerst sehe ich die "Insta" Zeichenfolge dann die "Static", warum passiert das?
%Vor%Wenn Sie schreiben
%Vor%Sie würden sehen, was Sie erwarten
static ctor wird wie erwartet zuerst ausgeführt, aber Sie drucken nach auf der Konsole
instance = new Singleton();
line, aber diese Zeile execute instance ctor, also "inst".
Also Ausführungsfluss:
Siehe das MSDN-Muster hier , um eine Erklärung für das Singleton-Muster zu erhalten.
>MSDN empfiehlt, dass Sie es wie folgt schreiben sollten, damit es threadsicher ist:
%Vor%Übrigens hat dieses Muster den folgenden Vorteil gegenüber dem statischen Konstruktor:
Die Instanziierung wird nicht ausgeführt, bis ein Objekt nach einer Instanz fragt; Dieser Ansatz wird als faule Instanziierung bezeichnet. Lazy Instanziierung vermeidet die Instanziierung unnötiger Singletons beim Start der Anwendung.
Sehen Sie, ob dies Ihren Anforderungen entspricht, und wenn dies der Fall ist, implementieren Sie diese Lösung.
Tags und Links c# constructor singleton static