Static readonly oder const in C#: Was wählt man 2025?

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Eine ewige Debatte, die nicht an Aktualität verliert



Stellen Sie sich vor: Sie schreiben Code in C# und müssen einen Wert deklarieren, der sich nicht ändern soll. Der erste Gedanke ist const. Der zweite ist static readonly. Und der dritte: „Was ist eigentlich der Unterschied?“.



Diese Frage ist eine der beliebtesten auf Stack Overflow. Tausende Entwickler, vom Anfänger bis zum Senior, diskutieren weiterhin, was besser ist. Und im Jahr 2025, mit der Veröffentlichung neuer Versionen von .NET und C# 13, ist diese Wahl noch interessanter geworden.



In diesem Artikel klären wir ein für alle Mal, wann man const und wann static readonly verwendet. Sie erfahren nicht nur die Theorie, sondern erhalten auch klare Regeln, die Sie noch heute anwenden können.



Was verbirgt sich hinter den Modifikatoren?



const: Die starre Konstante

Der Modifikator const in C# ist buchstäblich ein „in Stein gemeißelter“ Wert. Er muss zum Zeitpunkt der Kompilierung bekannt sein. Der Compiler setzt den Wert der Konstante direkt überall dort in den Code ein, wo sie verwendet wird.



public class MathConstants{    public const double Pi = 3.14159;    public const int DaysInWeek = 7;    public const string AppName = "MyApp";}


Beachten Sie: const ist immer implizit static. Sie können nicht static const schreiben – der Compiler gibt einen Fehler aus.



static readonly: Flexible Unveränderlichkeit

Der Modifikator static readonly ist ein Feld, das einmal initialisiert wird und sich danach nicht mehr ändert. Der Hauptunterschied: Der Wert kann zur Laufzeit des Programms berechnet werden.



public class AppSettings{    public static readonly DateTime ReleaseDate = new DateTime(2025, 1, 15);    public static readonly Guid InstanceId = Guid.NewGuid();    public static readonly string ConfigPath = GetConfigPath();        private static string GetConfigPath()    {        return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "config.json");    }}


Wesentliche Unterschiede: Tabelle zum schnellen Vergleich



Lassen Sie uns alles in einer übersichtlichen Tabelle darstellen:



Eigenschaft const static readonly
Initialisierungszeitpunkt Kompilierung Ausführung (statischer Konstruktor)
Zulässige Typen Nur primitive Typen (int, double, string, enum, bool) Beliebige Typen (einschließlich Referenztypen)
Speicher Wert wird in jede Assembly kopiert Einheitlicher Verweis im Speicher
Versionskompatibilität Probleme bei der Aktualisierung von Bibliotheken Sicher
Leistung Maximal (Einsetzung zur Kompilierzeit) Geringer Overhead beim ersten Zugriff


Wann wählt man const?



Verwenden Sie const, wenn:

  • Der Wert absolut unveränderlich ist – mathematische Konstanten (π, e), Anzahl der Tage in einer Woche, physikalische Konstanten.
  • Der Wert zur Kompilierzeit verfügbar sein muss – z. B. für Attribute, switch/case, Standardparameter.
  • Sie den gesamten Code kontrollieren – und sicher sind, dass die Bibliothek nicht separat aktualisiert wird.


// Ideal für constpublic class Physics{    public const double SpeedOfLight = 299792458; // m/s    public const double GravitationalConstant = 6.67430e-11; // m³/(kg·s²)}

// Verwendung in einem Attribut —

Blogs

Buchempfehlungen