const (C#-Referenz)const (C# Reference)

Sie verwenden das const-Schlüsselwort, um ein konstantes Feld oder eine konstante lokale Variable zu deklarieren.You use the const keyword to declare a constant field or a constant local. Konstante Felder und lokale Felder sind keine Variablen und können daher nicht geändert werden.Constant fields and locals aren't variables and may not be modified. Konstanten können Nummern, boolesche Werte, Zeichenfolgen oder ein NULL-Verweis sein.Constants can be numbers, Boolean values, strings, or a null reference. Erstellen Sie keine Konstante, um Informationen darzustellen, von denen Sie ausgehen, dass sie sich einmal ändern.Don’t create a constant to represent information that you expect to change at any time. Verwenden Sie beispielsweise kein konstantes Feld, um den Preis einer Dienstleistung, einer Produktversionsnummer oder den Markennamen eines Unternehmens zu speichern.For example, don’t use a constant field to store the price of a service, a product version number, or the brand name of a company. Diese Werte können sich im Laufe der Zeit ändern, und da Compiler Konstanten weitergeben, muss anderer Code, der mit Ihren Bibliotheken kompiliert wird, neu kompiliert werden, damit die Änderungen sichtbar werden.These values can change over time, and because compilers propagate constants, other code compiled with your libraries will have to be recompiled to see the changes. Weitere Informationen finden Sie auch unter dem readonly-Schlüsselwort.See also the readonly keyword. Beispiel:For example:

const int x = 0;  
public const double gravitationalConstant = 6.673e-11;  
private const string productName = "Visual C#";  

HinweiseRemarks

Der Typ einer Konstantendeklaration gibt den Typ der Member an, die durch die Deklaration eingeführt werden.The type of a constant declaration specifies the type of the members that the declaration introduces. Der Initialisierer einer konstanten lokalen Variable oder eines konstanten Felds muss ein konstanter Ausdruck sein, der implizit in den Zieltyp konvertiert werden kann.The initializer of a constant local or a constant field must be a constant expression that can be implicitly converted to the target type.

Ein konstanter Ausdruck ist ein Ausdruck, der während der Kompilierung vollständig ausgewertet werden kann.A constant expression is an expression that can be fully evaluated at compile time. Daher sind string und ein NULL-Verweis die einzig möglichen Werte für Verweistypkonstanten.Therefore, the only possible values for constants of reference types are string and a null reference.

In der Konstantendeklaration können mehrere Konstanten deklariert werden, z. B.:The constant declaration can declare multiple constants, such as:

public const double x = 1.0, y = 2.0, z = 3.0;  

Der static-Modifizierer ist in einer Konstantendeklaration nicht zulässig.The static modifier is not allowed in a constant declaration.

Eine Konstante kann wie folgt einen Teil eines konstanten Ausdrucks darstellen:A constant can participate in a constant expression, as follows:

public const int c1 = 5;  
public const int c2 = c1 + 100;  

Hinweis

Das readonly-Schlüsselwort unterscheidet sich vom const-Schlüsselwort.The readonly keyword differs from the const keyword. Ein const-Feld kann nur bei der Deklaration des Felds initialisiert werden.A const field can only be initialized at the declaration of the field. Ein readonly-Feld kann entweder bei der Deklaration oder in einem Konstruktor initialisiert werden.A readonly field can be initialized either at the declaration or in a constructor. Daher können readonly-Felder abhängig vom verwendeten Konstruktor über unterschiedliche Werte verfügen.Therefore, readonly fields can have different values depending on the constructor used. Außerdem ist ein const-Feld eine Kompilierzeitkonstante, während ein readonly-Feld für Laufzeitkonstanten verwendet werden kann, wie in der folgenden Codezeile: public static readonly uint l1 = (uint)DateTime.Now.Ticks;.Also, although a const field is a compile-time constant, the readonly field can be used for run-time constants, as in this line: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

BeispielExample

public class ConstTest 
{
    class SampleClass
    {
        public int x;
        public int y;
        public const int c1 = 5;
        public const int c2 = c1 + 5;

        public SampleClass(int p1, int p2)
        {
            x = p1;
            y = p2;
        }
    }

    static void Main()
    {
        SampleClass mC = new SampleClass(11, 22);
        Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
        Console.WriteLine("c1 = {0}, c2 = {1}", 
                          SampleClass.c1, SampleClass.c2);
    }
}
/* Output
    x = 11, y = 22
    c1 = 5, c2 = 10
*/

BeispielExample

In diesem Beispiel wird das Verwenden von Konstanten als lokale Variablen demonstriert.This example demonstrates how to use constants as local variables.

public class SealedTest
{
    static void Main()
    {
        const int c = 707;
        Console.WriteLine("My local constant = {0}", c);
    }
}
// Output: My local constant = 707

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#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
ModifiziererModifiers
readonlyreadonly