const (C#-Referenz)
Aktualisiert: November 2007
Das const-Schlüsselwort wird zum Ändern der Deklaration eines Felds oder einer lokalen Variablen verwendet. Es gibt an, dass der Wert des Felds oder der lokalen Variablen konstant ist, also nicht geändert werden kann. 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 wurden. Ein konstanter Ausdruck muss einen Wert des Zieltyps oder eines Typs, der implizit in den Zieltyp konvertiert werden kann, liefern.
Ein konstanter Ausdruck ist ein Ausdruck, der während der Kompilierung vollständig ausgewertet werden kann. Daher sind string und null 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 ist anders als das 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
*/
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 finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
6.1.6 Implizite Konstanten-/Ausdruckskonvertierungen
8.5.2 Lokale Konstantendeklarationen