Konstanten (C#-Programmierhandbuch)

Konstanten sind unveränderliche Werte, die zur Kompilierzeit bekannt sind und sich während der Lebensdauer des Programms nicht ändern. Konstanten werden mit dem const-Modifizierer deklariert. Nur die in C# integrierten Typen (außer System.Object) können als const deklariert werden. Eine Liste der integrierten Typen finden Sie unter Tabelle integrierter Typen. Benutzerdefinierte Typen einschließlich Klassen, Strukturen und Arrays können nicht const sein. Verwenden Sie den readonly-Modifizierer zum Erstellen einer Klasse, einer Struktur oder eines Arrays, die/das zur Laufzeit einmal initialisiert wird (z.B. in einem Konstruktor) und danach nicht geändert werden kann.

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

Der Enumerationstyp ermöglicht Ihnen das Definieren benannter Konstanten für ganzzahlige integrierte Typen (z.B. int, uint, long usw.). Weitere Informationen finden Sie unter enum.

Konstanten müssen initialisiert werden, wenn sie deklariert werden. Beispiel:

class Calendar1
{
    public const int months = 12;
}

In diesem Beispiel ist die Konstante months immer 12 und kann nicht einmal durch die Klasse selbst geändert werden. Wenn der Compiler einen konstanten Bezeichner im C#-Quellcode erkennt (z.B. months), ersetzt er den Literalwert direkt durch Code der Zwischensprache (Intermediate Language, IL), den er produziert. Da zur Laufzeit keine Variablenadresse einer Konstanten zugeordnet ist, können const-Felder nicht durch Verweis übergeben werden und können nicht als l-Wert in einem Ausdruck stehen.

Hinweis

Seien Sie vorsichtig beim Verweisen auf konstante Werte, die in anderem Code wie z.B. DLLs definiert sind. Wenn eine neue Version der DLL einen neuen Wert für die Konstante definiert, enthält das Programm weiterhin den alten Literalwert, bis es mit der neuen Version erneut kompiliert wird.

Mehrere Konstanten desselben Typs können zur gleichen Zeit deklariert werden wie zum Beispiel:

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

Der Ausdruck, mit dem eine Konstante initialisiert wird, kann auf eine andere Konstante verweisen, wenn dadurch kein Zirkelverweis entsteht. Zum 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 protected internal markiert werden. Diese Zugriffsmodifizierer definieren, wie Benutzer der Klasse auf die Konstante zugreifen können. Weitere Informationen finden Sie unter Zugriffsmodifizierer.

Auf Konstanten wird zugegriffen, als wären sie statische Felder, da der Wert der Konstante für alle Instanzen des Typs identisch ist. Sie verwenden nicht das static-Schlüsselwort, um sie zu deklarieren. Ausdrücke, die nicht in der Klasse enthalten sind, die die Konstante definiert, müssen den Klassennamen, einen Punkt und den Namen der Konstante verwenden, um auf die Konstante zuzugreifen. Zum Beispiel:

int birthstones = Calendar.months;

C#-Programmiersprachenspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.

Siehe auch

C#-Programmierhandbuch
Klassen und Strukturen
Eigenschaften
Typen
readonly
Immutability in C# Part One: Kinds of Immutability (Unveränderlichkeit in C# Teil eins: Arten von Unveränderlichkeit)