const (C#-Referenz)

Sie verwenden das const-Schlüsselwort, um ein konstantes Feld oder eine konstante lokale Variable zu deklarieren. Konstante Felder und lokale Felder sind keine Variablen und können daher nicht geändert werden. Konstanten können Nummern, boolesche Werte, Zeichenfolgen oder ein NULL-Verweis sein. Erstellen Sie keine Konstante, um Informationen darzustellen, von denen Sie ausgehen, dass sie sich einmal ändern. Verwenden Sie beispielsweise kein konstantes Feld, um den Preis einer Dienstleistung, einer Produktversionsnummer oder den Markennamen eines Unternehmens zu speichern. 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. Weitere Informationen finden Sie auch unter dem readonly-Schlüsselwort. Beispiel:

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

Hinweise

Der Typ einer Konstantendeklaration gibt den Typ der Member an, die durch die Deklaration eingeführt werden. Der Initialisierer einer konstanten lokalen Variable oder eines konstanten Felds muss ein konstanter Ausdruck sein, der implizit in den Zieltyp konvertiert werden kann.

Ein konstanter Ausdruck ist ein Ausdruck, der während der Kompilierung vollständig ausgewertet werden kann. Daher sind string und ein NULL-Verweis die einzig möglichen Werte für Verweistypkonstanten.

In der Konstantendeklaration können mehrere Konstanten deklariert werden, z. B.:

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

Der static-Modifizierer ist in einer Konstantendeklaration nicht zulässig.

Eine Konstante kann wie folgt einen Teil eines konstanten Ausdrucks darstellen:

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

Das readonly-Schlüsselwort unterscheidet sich vom const-Schlüsselwort. Ein const-Feld kann nur bei der Deklaration des Felds initialisiert werden. Ein readonly-Feld kann entweder bei der Deklaration oder in einem Konstruktor initialisiert werden. Daher können readonly-Felder abhängig vom verwendeten Konstruktor über unterschiedliche Werte verfügen. 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;.

Beispiel

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
*/

Beispiel

In diesem Beispiel wird das Verwenden von Konstanten als lokale Variablen demonstriert.

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

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#-Referenz
C#-Programmierhandbuch
C#-Schlüsselwörter
Modifizierer
readonly