Konstanten (C#-Programmierhandbuch)

Aktualisiert: November 2007

Konstanten sind unveränderliche Werte, die bei der Kompilierung bekannt sind und sich während der Ausführung des Programms nie ändern. Konstanten werden mit dem const-Modifizierer deklariert. Nur die integrierten Typen von C# (außer System.Object) können als const deklariert werden. Eine Liste der integrierten Typen finden Sie unter Tabelle integrierter Typen (C#-Referenz). Benutzerdefinierte Typen, einschließlich Klassen, Strukturen und Arrays, können nicht als const deklariert werden. Verwenden Sie den readonly-Modifizierer, um eine Klasse, eine Struktur oder ein Array zu erstellen, das zur Laufzeit einmalig initialisiert wird (beispielsweise in einem Konstruktor) und danach nicht mehr geändert werden kann.

In C# werden keine const-Methoden, -Eigenschaften oder -Ereignisse unterstützt.

Mithilfe des enum-Typs können benannte Konstanten für ganzzahlige integrierte Typen (z. B. int, uint, long usw.) definiert werden. Weitere Informationen hierzu finden Sie unter enum (C#-Referenz).

Konstanten müssen bereits bei der Deklaration initialisiert werden. Beispiel:

class Calendar1
{
    public const int months = 12;
}

In diesem Beispiel hat die Konstante months stets den Wert 12. Der Wert kann auch durch die Klasse selbst nicht geändert werden. Wenn der Compiler in C#-Quellcode auf einen Konstantenbezeichner trifft (z. B. months), ersetzt er den literalen Wert direkt in den von ihm erstellten Intermediate Language (IL)-Code. Da einer Konstanten zur Laufzeit keine Variablenadresse zugeordnet ist, können const-Felder nicht als Verweis übergeben oder als L-Wert in einem Ausdruck verwendet werden.

Hinweis:

Seien Sie vorsichtig, wenn Sie auf in anderem Code, z. B. DLLs, definierte konstante Werte verweisen. Wenn in einer neuen Version der DLL ein neuer Wert für die Konstante definiert wird, verwendet Ihr Programm weiterhin den alten literalen Wert, bis es mit der neuen Version erneut kompiliert wird.

Es ist möglich, mehrere Konstanten desselben Typs gleichzeitig zu deklarieren, zum Beispiel folgendermaßen:

class Calendar2
{
    const int months = 12, weeks = 52, days = 365;
}

Der Ausdruck, der für die Initialisierung einer Konstante verwendet wird, kann auf eine andere Konstante verweisen, wenn dies nicht zu einem Zirkelverweis führt. Beispiel:

class Calendar3
{
    const int months = 12;
    const int weeks = 52;
    const int days = 365;

    const double daysPerWeek = (double) days / (double) weeks;
    const double daysPerMonth = (double) days / (double) months;
}

Konstanten können als public, private, protected, internal oder protectedinternal gekennzeichnet werden. Diese Zugriffsmodifizierer definieren, wie Benutzer der Klasse auf die Konstante zugreifen können. Weitere Informationen hierzu finden Sie unter Zugriffsmodifizierer (C#-Programmierhandbuch).

Auf Konstanten wird wie auf static-Felder zugegriffen, da der Wert der Konstanten für alle Instanzen des Typs derselbe ist. Für ihre Deklaration wird nicht das static-Schlüsselwort verwendet. In Ausdrücken außerhalb der Klasse, in der die Konstante definiert wird, erfolgt der Zugriff auf die Konstante über den Klassennamen, gefolgt von einem Punkt und dem Namen der Konstante. Beispiel:

int birthstones = Calendar.months;

C#-Programmiersprachenspezifikation

Weitere Informationen finden Sie im folgenden Abschnitt in der C#-Programmiersprachenspezifikation:

  • 10,4 Konstanten

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

Klassen und Strukturen (C#-Programmierhandbuch)

Eigenschaften (C#-Programmierhandbuch)

Typen (C#-Programmierhandbuch)

readonly (C#-Referenz)

Weitere Ressourcen

Immutability in C# Part One: Kinds of Immutability