Arbeiten mit .NET: C-Sharp/ Grundlagen/ Bestandteile/ Konstante
Konstante sind Werte, die sich während des Programmablaufs nicht mehr verändern sollen.
Definition
[Bearbeiten]Konstante sind Variablen, deren Wert während des Programmablaufs konstant ist. Ihnen darf nur ein einziges Mal ein Wert zugewiesen werden, nämlich bei der Initialisierung. Während „normale“ Variablen auch ohne Wert deklariert werden dürfen und nachher durch eine Zuweisungsoperation einen Wert erhalten können, ist beides bei Konstanten nicht möglich. Ihnen muss während der Deklaration auch ein Wert zugewiesen werden.
Die Deklaration von Konstanten unterscheidet sich kaum von der Deklaration „normaler“ Variablen. Die Deklaration wird lediglich durch das Schlüsselwort const ergänzt. Allgemein wird eine Konstante so festgelegt:
const <Datentyp> <Name> = <Wert> ;
Konkret sieht das für einige Werte, die sich fast niemals ändern, so aus:
// der Satz der Mehrwertsteuer
public const double Vat = 19.0;
// der Name der Firma
public const string TheName = "Wikibooks";
// der Wert π aus der Math-Klasse
public const double PI = 3.14159265358979323846;
Als Zuweisung ist auch eine Operation zulässig. Der konkrete Wert muss aber vom Compiler bestimmt werden können.
Man liest manchmal, dass die Namen von Konstanten in Großbuchstaben zu schreiben seien. Das widerspricht den Namenskonventionen unter .NET und hat auch keine Vorteile, weil die Konstanten wie alle anderen Variablen benutzt werden.
Verwendung
[Bearbeiten]Nach der Deklaration können Konstanten wie alle anderen Variablen verwendet werden – mit der Ausnahme, dass die Zuweisung eines neuen Wertes nicht möglich ist. Da eine Konstante nur sinnvoll ist, wenn sie für ein ganzes Programm (oder wenigstens einen größeren Programmteil) genutzt wird, tritt sie selten innerhalb einer Methode oder innerhalb eines Blocks von Anweisungen auf, sondern als Element einer Klasse. Auch deshalb wird sie in aller Regel als public deklariert.
Die folgenden Beispiele stellen gültige und fehlerhafte Anweisungen und Befehle gegenüber. Gute Entwicklungsumgebungen weisen Sie auch darauf hin, wenn Sie versuchen, einer Konstante einen Wert zuzuweisen.
const int a = 1; // zulässig
const int b = 3*a; // zulässig, weil a eine Konstante ist
a = 2; // unzulässig: der Wert darf nicht geändert werden
const double c; // unzulässig: const-Deklaration ohne Initialisierung
Bedeutung
[Bearbeiten]Vorteile von Konstanten
[Bearbeiten]Der Nutzen von Konstanten besteht vor allem aus den folgenden Punkten.
- Änderungsverbot
Wenn sich der Wert einer Variablen aus sachlichen Gründen nicht ändern darf, verhindert die Deklaration als const die Änderung innerhalb des Programms. Beispielsweise darf die Kreiszahl nicht geändert werden, es handelt sich ja um eine mathematische Konstante.
- Bessere Lesbarkeit des Codes
Konstanten erhöhen die Lesbarkeit von Code. Vergleichen Sie dazu das folgende Beispiel, das in einem Grafikprogramm absolute Werte verwendet. Problem: Was soll die 48?
int width = numberOfPictures * 48;
Durch eine Konstante wird die Unklarheit beseitigt.
const int WidthOfPictures = 48;
int width = numberOfPictures * WidthOfPicture;
- Vereinfachte Änderung des Codes
Konstanten erhöhen die Wartbarkeit von Code: Die Änderung des Wertes einer Konstanten muss nur an einer Stelle vorgenommen werden, nämlich bei ihrer Initialisierung.
Oft wird ein Wert wiederholt an verschiedenen Stellen für eine ähnliche Berechnung verwendet. Im vorigen Beispiel würde man wahrscheinlich mehrmals die Gesamtbreite mehrerer Bilder berechnen. Wenn die Standardbreite von 48 Pixel auf 64 Pixel geändert werden soll und der Wert „im Klartext“ an allen Stellen stünde, müsste er an allen diesen Stellen manuell geändert werden. Wie leicht verschreibt man sich bei einer solchen massenweisen Änderung oder übersieht ein Vorkommnis.
Bei Verwendung einer Konstanten muss man nur einen Wert verändern, der Rest aktualisiert sich dann automatisch.
- Kompilierung
Die automatische Aktualisierung nimmt der Compiler vor: Er sieht, dass der Wert hinter der Variablen sich niemals ändert, und setzt an allen Stellen den tatsächlichen Wert ein. Zur Laufzeit muss nichts mehr berechnet werden; der Computer muss keine Speicherstellen suchen, wo sich der benötigte Wert befindet.
Zusätzliche Erläuterungen dazu, wie das Programm die Konstanten behandelt, finden sich im OOP-Kapitel über Zugriffsrechte.
Nachteile von Konstanten
[Bearbeiten]Trotz der offensichtlichen Vorteile sollen Nachteile nicht verschwiegen werden. In der Praxis werden Konstante unter .NET nicht so häufig verwendet, wie man es erwarten könnte. Fast immer ist es sinnvoller, solche Festlegungen aus Konfigurationsdateien o.ä. zu holen. Vergleichen Sie das, was in den obigen Beispielen angegeben wurde:
- Die Mehrwertsteuer kann sich immer wieder einmal ändern. Der aktuelle Wert hängt auch vom Rechnungsdatum und der Art der Ware oder Dienstleistung ab.
- Standardwerte (wie der Pixel-Wert oder die Firmenbezeichnung) hängen von der konkreten Verwendung ab.
Lediglich solche Konstanten wie die Zahl sind wirklich als Konstante geeignet.
Literale sind keine Konstanten
[Bearbeiten]Weil der Begriff Konstante sprachlich nicht ganz eindeutig ist, sei es nochmals wiederholt: Ein konstanter Wert, der einer Variablen zugewiesen wird, wird als Literal bezeichnet.
Zusammenfassung
[Bearbeiten]In diesem Kapitel werden Konstante als besondere Variable eingeführt:
- Eine Konstante ist eine Variable, deren Wert sich während des Programmablaufs nicht ändert.
- Der Wert muss direkt bei der Deklaration festgelegt werden.
Bei ihrer Verwendung sind Vor- und Nachteile gegeneinander abzuwägen.
Siehe auch
[Bearbeiten]Bei Wikipedia gibt es Artikel zu folgenden Themen:
In folgenden Kapiteln gibt es weitere Erläuterungen:
- OOP: Zugriffsrechte zur Auswertung von Konstanten durch den Compiler