3.8 Konstanten in einer Klasse
3.8.1 Konstanten mit dem Schlüsselwort »const«

Benötigen Sie einen Wert, der während der Laufzeit der Anwendung nicht geändert werden darf, sollten Sie eine Konstante deklarieren. Kennzeichnend für eine Konstante ist das Schlüsselwort const zwischen dem Zugriffsmodifizierer und dem Datentyp, beispielsweise:
public class Mathematics {
public const double PI = 3.14;
[...]
}
Um eine Konstante auszuwerten, muss der Name der Klasse, in der die Konstante definiert ist, angegeben werden, beispielsweise:
Mathematics.PI;
Der Zugriff über eine Objektreferenz ist nicht erlaubt.
Der Wert einer Konstanten wird schon bei der Kompilierung ausgewertet. Da Referenztypen erst zur Laufzeit aufgelöst werden können, kommen für diese Konstanten im Grunde genommen nur Wertetypen wie int, long, double usw. in Frage. Eine Ausnahme bildet nur der Typ string, der unter .NET zwar als Referenztyp behandelt wird, aber dennoch als const-Konstante angegeben werden darf.
3.8.2 Schreibgeschützte Felder mit »readonly«
Durch die Eliminierung des set-Blocks in einer Eigenschaft können Sie diese vor unbefugtem schreibendem Zugriff schützen. Dieses Verhalten kann auch innerhalb einer Felddefinition erreicht werden. Dazu wird die Deklaration um das reservierte Wort readonly ergänzt, z. B.:
public readonly double PI = 3.14;
Im Gegensatz zu einer const-Konstanten kann die Festlegung des Wertes einer readonly-Konstanten sowohl bei der Deklaration als auch innerhalb eines Konstruktors erfolgen. Das Festlegen in einer Methode ist nicht möglich. Eine readonly-Konstante ist besonders in den Fällen sehr gut geeignet, wenn die Konstante einen Referenztyp beschreiben soll. Im Gegensatz zu einer const-Konstanten wird eine readonly-Konstante auf einer Objektreferenz aufgerufen.
Im folgenden Codebeispiel werden in der Klasse Coordinate die beiden Konstanten XCoordinate und YCoordinate beim Aufruf des Konstruktors festgelegt.
class Coordinate {
public readonly int XCoordinate;
public readonly int YCoordinate;
public Coordinate(int x, int y) {
XCoordinate = x;
YCoordinate = y;
}
}
Listing 3.40 »readonly«-Konstanten definieren und einen Wert zuweisen
Die Auswertung der beiden Konstanten zeigen die folgenden drei Anweisungen:
Coordinate point = new Coordinate(-12, 76);
Console.WriteLine("X: " + point.XCoordinate);
Console.WriteLine("Y: " + point.YCoordinate);
Listing 3.41 Auswertung von »readonly«-Konstanten
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.