Freigeben über


Konstanten (C#-Programmierhandbuch)

Konstanten sind unveränderliche Werte, die zur Kompilierungszeit bekannt sind und sich nicht für die Lebensdauer des Programms ändern. Konstanten werden mit dem Konstmodifizierer deklariert. Nur die integrierten C#-Typen können als constdeklariert werden. Verweistypkonstanten außer String können nur mit einem Nullwert initialisiert werden. Benutzerdefinierte Typen, einschließlich Klassen, Strukturen und Arrays, können nicht sein const. Verwenden Sie den Readonly-Modifizierer , um eine Klasse, Struktur oder ein Array zu erstellen, die zur Laufzeit (z. B. in einem Konstruktor) einmal initialisiert wird und danach nicht mehr geändert werden kann.

C# unterstützt const keine 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 sie kann nicht sogar von der Klasse selbst geändert werden. Tatsächlich ersetzt der Compiler beim Aufeinandertreffen eines konstanten Bezeichners im C#-Quellcode (z. B. Months) den literalen Wert direkt im von ihm erzeugten IL-Zwischensprache-Code. Da zur Laufzeit keine variable Adresse einer Konstante zugeordnet ist, const können Felder nicht durch Verweis übergeben werden und können nicht als l-Wert in einem Ausdruck angezeigt werden.

Hinweis

Verwenden Sie Vorsicht, wenn Sie auf konstanten Werte verweisen, die in anderen Code definiert sind, z. B. DLLs. Wenn eine neue Version der DLL einen neuen Wert für die Konstante definiert, enthält Das Programm weiterhin den alten Literalwert, bis er mit der neuen Version neu kompiliert wird.

Mehrere Konstanten desselben Typs können gleichzeitig deklariert werden, z. B.:

class Calendar2
{
    public const int Months = 12, Weeks = 52, Days = 365;
}

Der Ausdruck, der zum Initialisieren einer Konstante verwendet wird, kann auf eine andere Konstante verweisen, sofern kein Zirkelbezug entsteht. Beispiel:

class Calendar3
{
    public const int Months = 12;
    public const int Weeks = 52;
    public const int Days = 365;

    public const double DaysPerWeek = (double) Days / (double) Weeks;
    public const double DaysPerMonth = (double) Days / (double) Months;
}

Konstanten können als öffentlich, privat, geschützt, intern, intern oder privat geschützt gekennzeichnet werden. Diese Zugriffsmodifizierer definieren, wie Benutzer der Klasse auf die Konstante zugreifen können. Weitere Informationen finden Sie unter Zugriffsmodifikatoren.

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 das static Schlüsselwort nicht, um sie zu deklarieren. Ausdrücke, die sich nicht in der Klasse befinden, die die Konstante definiert, müssen den Klassennamen, einen Punkt und den Namen der Konstante verwenden, um auf die Konstante zuzugreifen. Beispiel:

int birthstones = Calendar.Months;

C#-Sprachspezifikation

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

Siehe auch