Siehe „C# Advanced Programming, Vierte Ausgabe“
· Ein Grund für das Schreiben eines statischen Konstruktors besteht darin, dass eine Klasse über einige statische Felder oder Eigenschaften verfügt, die von einer externen Quelle initialisiert werden müssen, bevor die Klasse zum ersten Mal verwendet wird.
· Statische Konstruktoren werden höchstens einmal ausgeführt, bevor der Code auf die Klasse verweist.
· Der statische Konstruktor hat keine Zugriffsmodifikatoren und wird nie von anderem C#-Code aufgerufen, daher sind Zugriffsmodifikatoren wie „public“ und „private“ bedeutungslos.
· Der statische Konstruktor kann keine Parameter annehmen und eine Klasse kann nur einen statischen Konstruktor haben.
· Statische Konstruktoren können nur auf statische Mitglieder der Klasse zugreifen, nicht auf Instanzmitglieder.
Nachfolgend finden Sie ein Beispiel:
öffentliche Klasse UserPreferences
{
öffentliche statische schreibgeschützte Farbe BackColor;
statische UserPreferences()
{
//BackColor aus unserer Quelle lesen;
}
// ...
}
classMainEntryPoint
{
static void Main()
{
Console.WriteLine(UserPreferences.BackColor.ToString());
}
}
Beachten Sie, dass parameterlose Instanzkonstruktoren sicher mit statischen Konstruktoren in einer Klasse koexistieren können. Obwohl die Parameterliste dieselbe ist, gibt es keinen Widerspruch, da der statische Konstruktor beim Laden der Klasse und der Instanzkonstruktor beim Erstellen der Instanz ausgeführt wird, sodass bei der Ausführung des Konstruktors kein Konflikt auftritt.
Klasse MyTempClass
{
öffentliches statisches int num = 100;
statische MyTempClass()
{
Anzahl = 101;
}
}
Klassenprogramm
{
static void Main(string[] args)
{
int x = MyTempClass.num;
Console.WriteLine();
}
}
Wenn im obigen Programm der statische Konstruktor nicht hinzugefügt wird, beträgt der Wert von x 100. Wenn der Konstruktor hinzugefügt wird, beträgt der Wert von x 101.