Das Const-Schlüsselwort
Sie verwenden das Schlüsselwort const
, um ein Konstantenfeld oder eine lokale Konstante zu deklarieren. Konstantenfelder und lokale Variablen sind keine Variablen und können nicht geändert werden. Konstanten können Zahlen, boolesche Werte, Zeichenfolgen oder ein Nullverweis sein. Erstellen Sie keine Konstante, um Informationen darzustellen, die Sie jederzeit ändern möchten. Verwenden Sie z. B. kein konstantes Feld, um den Preis eines Dienstes, eine Produktversionsnummer oder den Markennamen eines Unternehmens zu speichern. Diese Werte können sich im Laufe der Zeit ändern, und da Compiler Konstanten weitergeben, müssen andere mit Ihren Bibliotheken kompilierte Code neu kompiliert werden, um die Änderungen anzuzeigen. Weitere Informationen finden Sie auch unter dem readonly-Schlüsselwort. Zum Beispiel:
const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";
Interpolierte Zeichenfolgen können konstant sein, wenn alle verwendeten Ausdrücke auch konstante Zeichenfolgen sind. Dieses Feature kann den Code verbessern, der konstanten Zeichenfolgen erstellt:
const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";
Hinweise
Der Typ einer Konstantendeklaration gibt den Typ der Elemente an, die von der Deklaration eingeführt werden. Der Initialisierer einer lokalen Konstante oder eines Konstantenfelds muss ein Konstantenausdruck 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 die einzigen möglichen Werte für Konstanten von Bezugstypen Zeichenfolgen und ein Nullverweis.
Die Konstantendeklaration kann mehrere Konstanten deklarieren, 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;
Anmerkung
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 je nach verwendetem Konstruktor unterschiedliche Werte aufweisen. Auch wenn ein const
-Feld eine Kompilierungszeitkonstante ist, kann das feld readonly
für Laufzeitkonstanten verwendet werden, wie in dieser Zeile: public static readonly uint l1 = (uint)DateTime.Now.Ticks;
Beispiele
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()
{
var mC = new SampleClass(11, 22);
Console.WriteLine($"x = {mC.x}, y = {mC.y}");
Console.WriteLine($"C1 = {SampleClass.C1}, C2 = {SampleClass.C2}");
}
}
/* Output
x = 11, y = 22
C1 = 5, C2 = 10
*/
Im folgenden Beispiel wird veranschaulicht, wie eine lokale Konstante deklariert wird:
public class SealedTest
{
static void Main()
{
const int C = 707;
Console.WriteLine($"My local constant = {C}");
}
}
// Output: My local constant = 707
C#-Sprachspezifikation
Weitere Informationen finden Sie in den folgenden Abschnitten der C#-Sprachspezifikation: