Programmierkurs C-Sharp: Konstante
Aus Wikibooks
Inhaltsverzeichnis |
[Bearbeiten] Konstanten
Konstanten sind Werte, die sich durch den Programmablauf nicht mehr verändern sollen. Durch Deklaration in Form einer Konstanten sind diese Werte vor (versehentlichen) Veränderungen geschützt. Beispiele für solche Konstanten sind die Kreiszahl PI, der aktuell gültige Mehrwertsteuersatz oder auch die Anzahl der Zeichen, die auf einem Ausdruck ausgegeben werden sollen.
Selbstverständlich könnte man diese Werte innerhalb des Quelltextes auch in Form eines Literals ausdrücken, z.B. durch 3.1415, 0.19 oder auch 80. Allerdings hat diese Vorgehensweise zwei gewichtige Nachteile:
- Ausdrücke mit Literalen sind schwer nachvollziehbar (vgl. Preis = 80 * (1 + 19.0/100) - 80 * 15.0/100 anstelle von Preis = NETTO * (1 + STEUERSATZ/100) - NETTO * RABATTSATZ/100;)
- Ändern sich Werte von Konstanten, so erfordert dies ausschließlich eine Änderung an einer Stelle im Quellcode, nämlich bei der Deklaration dieser Konstanten, um das Programm zu aktualisieren.
Zur einfachen Identifikation von Konstanten in Quelltexten wird empfohlen, die NAMEN von Konstanten in Großbuchstaben zu notieren.
Jede Programmiersprache hat ihre Eigenheiten, wie man Konstanten definiert. Grundsätzlich sieht das in C# wie folgt aus:
const <Typ> NAME = <Wert>;
Der angegebene Wert kann ein Literal oder auch ein Ausdruck sein. Der Typ des Wertes oder Ausdrucks muss dabei mit dem Typ der Konstanten kompatibel sein, d.h., er muss sich implizit oder explizit in diesen umwandeln lassen.
Zur Beachtung: Konstante sind leicht mit Variablen, denen bei der Deklaration ein Anfangswert zugewiesen wird, verwechselbar. Diese initialisierten Variablen werden wie folgt deklariert:
<Typ> Name = <Wert>;
Im Unterschied zu einer Konstanten können initialisierten Variablen im Programmablauf beliebig oft neue Werte zugewiesen werden:
Name = <neuerWert>;
Versucht man dies bei Konstanten
NAME = <neuerWert>:
erzeugt der Compiler dagegen eine Fehlermeldung und verhindert somit die erneute Zuweisung eines Wertes an die Konstante.
[Bearbeiten] Numerische Konstanten
Numerische Kostanten, also Zahlen, sind einfach zu definieren, da man sie einfach hinschreiben kann, wobei sich der Wert aus einem Literal oder einem Ausdruck ergeben kann:
const int GEBURTSJAHR = 1980; const int JAHR = 2008; const int ALTER = JAHR - GEBURTSJAHR;
const double GRUNDGEHALT = 3.2e3; // ergibt 3200
Bei der Gleitkommazahl wird, wie im amerikanischen Sprachraum üblich, ein Punkt als Komma verwendet. Das E gibt den Exponenten einer Zahl an. Das heißt man multipliziert die Zahl davor mit 10Exponent. Wenn die Zahl negativ ist, dann dividiert man durch 10Exponent. Also das obige Beispiel hätte man wie folgt schreiben können:
const double GRUNDGEHALT = 3200;
const double GRUNDGEHALT = 320e1;
const double GRUNDGEHALT = 32e2;
const double GRUNDGEHALT = 3.2e3;
const double GRUNDGEHALT = 0.32e4;
oder auch:
const double GRUNDGEHALT = 32000e-1;
const double GRUNDGEHALT = 320000e-2;
const double GRUNDGEHALT = 3200000e-3;
const double GRUNDGEHALT = 32000000e-4;
[Bearbeiten] Zeichen Konstanten
const char ZEICHEN = 'A';
[Bearbeiten] String Konstanten
Im Quelltext hinterlassene Stringkonstanten sind prinzipiell stringobjekte und werden im Code einfach in Anführungszeichen geschrieben und sind immer Unicode kodiert. Wenn man bestimmte Zeichen kodieren möchte, die sich nicht normal eingeben lassen, kann man auf deren numerische Entsprechung zurückgreifen und die seit C bekannte \-Kodierung benutzen:
const string Zeile1 = "Zeile A"; // Ausgabe: Zeile A
const string Zeile2 = "Zeile B \\"; // Ausgabe: Zeile B \
const string Zeile3 = "Zeile C \""; // Ausgabe: Zeile C "
Wenn man die doppelten \ nicht haben möchte, kann man einfach ein @ vor den Stringliteral schreiben:
const string Zeile4 = @"Zeile D \"; // Ausgabe: Zeile D \
Stringliterale können mit Plus einfach verbunden werden:
const string Zeile5 = "Zeile 5" + "Zeile 6"; // Ausgabe: Zeile 5Zeile 6
Wenn man das jetzt wirklich in zwei Zeilen ausgeben möchte, muss man einen Zeilenumbruch (LineFeed) und einen Wagenrücklauf (Carriage Return) einbauen:
const string Zeile7 = "Zeile 7\r\n" + "Zeile 8"; // Ausgabe: Zeile 7
// Zeile 8
Eleganter geht das dann aber mit dem @-Zeichen, das die vorhanden Umbrüche mit einfügt:
const string Zeile9=@"Zeile 9
Zeile 10";
\' Einfaches Hochkomma
\" Anführungszeichen
\\ Umgekehrter Schrägstrich (Backslash)
\0 Null (Unicode-Wert 0)
\a Piepton (Alert)
\b Rückschritt (Backspace)
\f Seitenvorschub (Form feed)
\n Neue Zeile (New line)
\r Wagenrücklauf (Carriage return)
\t Tabulator
\v Vertikaler Tabulator
Es gibt noch mehrere dieser Konstanten:
| Zeichenfolge | Ausgabe | Ascii | Beschreibung |
| \0 | Unicode 0 | ||
| \n | Neue Zeile (New line) | ||
| \r | |||
| \uXXXX | Unicode konstante | ||
| "" | |||
| \\ | \ |