Konstanten (C#-Programmierhandbuch)Constants (C# Programming Guide)

Konstanten sind unveränderliche Werte, die zur Kompilierzeit bekannt sind und sich während der Lebensdauer des Programms nicht ändern.Constants are immutable values which are known at compile time and do not change for the life of the program. Konstanten werden mit dem const-Modifizierer deklariert.Constants are declared with the const modifier. Nur die in C# integrierten Typen (außer System.Object) können als const deklariert werden.Only the C# built-in types (excluding System.Object) may be declared as const. Eine Liste der integrierten Typen finden Sie unter Tabelle integrierter Typen.For a list of the built-in types, see Built-In Types Table. Benutzerdefinierte Typen einschließlich Klassen, Strukturen und Arrays können nicht const sein.User-defined types, including classes, structs, and arrays, cannot be const. 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.Use the readonly modifier to create a class, struct, or array that is initialized one time at runtime (for example in a constructor) and thereafter cannot be changed.

C# unterstützt keine const-Methoden, -Eigenschaften oder -Ereignisse.C# does not support const methods, properties, or events.

Der Enumerationstyp ermöglicht Ihnen das Definieren benannter Konstanten für ganzzahlige integrierte Typen (z.B. int, uint, long usw.).The enum type enables you to define named constants for integral built-in types (for example int, uint, long, and so on). Weitere Informationen finden Sie unter enum.For more information, see enum.

Konstanten müssen initialisiert werden, wenn sie deklariert werden.Constants must be initialized as they are declared. Zum Beispiel:For example:

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.In this example, the constant months is always 12, and it cannot be changed even by the class itself. 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.In fact, when the compiler encounters a constant identifier in C# source code (for example, months), it substitutes the literal value directly into the intermediate language (IL) code that it produces. 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.Because there is no variable address associated with a constant at run time, const fields cannot be passed by reference and cannot appear as an l-value in an expression.

Hinweis

Seien Sie vorsichtig beim Verweisen auf konstante Werte, die in anderem Code wie z.B. DLLs definiert sind.Use caution when you refer to constant values defined in other code such as DLLs. 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.If a new version of the DLL defines a new value for the constant, your program will still hold the old literal value until it is recompiled against the new version.

Mehrere Konstanten desselben Typs können zur gleichen Zeit deklariert werden wie zum Beispiel:Multiple constants of the same type can be declared at the same time, for example:

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.The expression that is used to initialize a constant can refer to another constant if it does not create a circular reference. Zum Beispiel:For example:

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, protected internal oder private protected markiert werden.Constants can be marked as public, private, protected, internal, protected internal or private protected. Diese Zugriffsmodifizierer definieren, wie Benutzer der Klasse auf die Konstante zugreifen können.These access modifiers define how users of the class can access the constant. Weitere Informationen finden Sie unter Zugriffsmodifizierer.For more information, see Access Modifiers.

Auf Konstanten wird zugegriffen, als wären sie statische Felder, da der Wert der Konstante für alle Instanzen des Typs identisch ist.Constants are accessed as if they were static fields because the value of the constant is the same for all instances of the type. Sie verwenden nicht das static-Schlüsselwort, um sie zu deklarieren.You do not use the static keyword to declare them. 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.Expressions that are not in the class that defines the constant must use the class name, a period, and the name of the constant to access the constant. Zum Beispiel:For example:

int birthstones = Calendar.months;

C#-ProgrammiersprachenspezifikationC# Language Specification

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

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
Klassen und StrukturenClasses and Structs
EigenschaftenProperties
TypenTypes
readonlyreadonly
Immutability in C# Part One: Kinds of Immutability (Unveränderlichkeit in C# Teil eins: Arten von Unveränderlichkeit)Immutability in C# Part One: Kinds of Immutability