Statische Konstruktoren
Initialisieren Sie den statischen Zustand genau einmal.
Statische Konstruktoren ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein statischer Konstruktor?
Ein statischer Konstruktor initialisiert statische Daten für eine Klasse. Er wird automatisch einmal ausgeführt, bevor die Klasse zum ersten Mal verwendet wird, und Sie rufen ihn nie direkt auf.
using System;
class App
{
public static string Version;
static App()
{
Version = "1.0.0";
Console.WriteLine("Static constructor ran");
}
}
class Program
{
static void Main()
{
Console.WriteLine(App.Version);
}
}Syntaxregeln
Ein statischer Konstruktor verwendet das Schlüsselwort static, trägt den Klassennamen, übernimmt keine Parameter und hat keinen Zugriffsmodifizierer.
using System;
class Config
{
public static int MaxUsers;
static Config()
{
MaxUsers = 100;
}
}
class Program
{
static void Main()
{
Console.WriteLine("Max: " + Config.MaxUsers);
}
}Wird genau einmal ausgeführt
Unabhängig davon, wie oft Sie die Klasse verwenden, wird der statische Konstruktor nur einmal ausgeführt – beim ersten erforderlichen Zugriff.
using System;
class Counter
{
public static int Instances;
static Counter()
{
Console.WriteLine("Initializing static state");
Instances = 0;
}
public Counter() { Instances++; }
}
class Program
{
static void Main()
{
new Counter();
new Counter();
Console.WriteLine("Instances: " + Counter.Instances);
}
}Wann wird er ausgelöst?
Die Laufzeitumgebung ruft ihn unmittelbar vor dem ersten Zugriff auf ein statisches Member ODER vor der ersten Erstellung einer Instanz auf – je nachdem, was zuerst eintritt.
using System;
class Lazy
{
public static string Data;
static Lazy()
{
Console.WriteLine("Triggered now");
Data = "ready";
}
}
class Program
{
static void Main()
{
Console.WriteLine("Before access");
Console.WriteLine(Lazy.Data);
}
}Komplexe statische Daten initialisieren
Verwenden Sie einen statischen Konstruktor, wenn statische Felder für ihre Einrichtung echte Logik benötigen und einfache Literale nicht ausreichen.
using System;
using System.Collections.Generic;
class Lookup
{
public static Dictionary<int, string> Table;
static Lookup()
{
Table = new Dictionary<int, string>();
for (int i = 1; i <= 3; i++)
Table[i] = "Item" + i;
}
}
class Program
{
static void Main()
{
Console.WriteLine(Lookup.Table[2]);
}
}Statischer Konstruktor oder Feldinitialisierer
Einfache Werte können inline initialisiert werden. Ein statischer Konstruktor eignet sich für eine Einrichtung, die Anweisungen, Schleifen oder Fehlerbehandlung benötigt.
using System;
class Settings
{
public static int Simple = 10; // inline initializer
public static int Computed; // needs logic
static Settings()
{
Computed = Simple * Simple;
}
}
class Program
{
static void Main()
{
Console.WriteLine(Settings.Simple + ", " + Settings.Computed);
}
}Keine Parameter erlaubt
Da die Laufzeitumgebung ihn für Sie aufruft, kann ein statischer Konstruktor keine Argumente annehmen. Alle Eingaben müssen aus anderen statischen Daten oder Konstanten stammen.
using System;
class Clock
{
public static int StartHour;
static Clock()
{
StartHour = 9;
}
}
class Program
{
static void Main()
{
Console.WriteLine("Start: " + Clock.StartHour);
}
}Statische und Instanzkonstruktoren kombinieren
Eine Klasse kann beide Arten enthalten. Der statische Konstruktor wird einmal für den Typ ausgeführt, der Instanzkonstruktor für jedes Objekt.
using System;
class Game
{
public static string Title;
public int Score;
static Game()
{
Title = "Coddy Quest";
}
public Game(int score)
{
Score = score;
}
}
class Program
{
static void Main()
{
var g = new Game(50);
Console.WriteLine(Game.Title + " score " + g.Score);
}
}Garantierte Reihenfolge
Der statische Konstruktor wird garantiert abgeschlossen, bevor der Körper eines Instanzkonstruktors ausgeführt wird, der ihn auslöst. Dadurch ist der statische Zustand immer bereit.
using System;
class Service
{
public static string Endpoint;
static Service()
{
Endpoint = "https://api.example.com";
}
public Service()
{
Console.WriteLine("Using " + Endpoint);
}
}
class Program
{
static void Main()
{
new Service();
}
}Sparsam verwenden
Statische Konstruktoren führen vor der Verwendung einer Klasse eine einmalige Prüfung hinzu und können bei übermäßiger Verwendung oder ausgelösten Ausnahmen die Leistung beeinträchtigen. Halten Sie sie klein und zuverlässig.
using System;
class Cache
{
public static int[] Data;
static Cache()
{
Data = new int[] { 2, 4, 6, 8 };
}
}
class Program
{
static void Main()
{
Console.WriteLine(Cache.Data[3]);
}
}Alles zusammenführen
Statische Konstruktoren eignen sich ideal für die einmalige Einrichtung gemeinsam genutzter, schreibgeschützter Daten, etwa Nachschlagetabellen oder aus Konstanten geladener Konfigurationen.
using System;
using System.Collections.Generic;
class Currency
{
public static Dictionary<string, string> Symbols;
static Currency()
{
Symbols = new Dictionary<string, string>
{
["USD"] = "$",
["EUR"] = "E",
["JPY"] = "Y"
};
}
}
class Program
{
static void Main()
{
Console.WriteLine("USD symbol: " + Currency.Symbols["USD"]);
}
}Schnelltest
Testen Sie Ihr Verständnis von statischen Konstruktoren.
Zusammenfassung
Ein statischer Konstruktor verwendet static ClassName(), hat keine Parameter und keinen Zugriffsmodifizierer. Er wird automatisch einmal ausgeführt, bevor die Klasse zum ersten Mal verwendet wird, um statischen Zustand zu initialisieren, der echte Logik benötigt. Verwenden Sie ihn sparsam für die einmalige Einrichtung gemeinsam genutzter Daten.
using System;
class Demo
{
public static int Value;
static Demo() { Value = 42; }
}
class Program
{
static void Main()
{
Console.WriteLine(Demo.Value);
}
}Häufig gestellte Fragen
Ist die Lektion „Statische Konstruktoren“ kostenlos?
Ja — der vollständige Text von „Statische Konstruktoren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Statische Konstruktoren“?
Initialisieren Sie den statischen Zustand genau einmal. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Statische Konstruktoren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Konstruktoren definieren
- Konstruktorverkettung mit this
- Objekt- und Collection-Initialisierer
- Statische Konstruktoren