Im heutigen Blogartikel werden wir die C# Datentypen und Variablen genauer unter die Lupe nehmen. Wir widmen uns damit direkt einem der wichtigsten Konzepte einer jeden Programmiersprache.
Inhaltsverzeichnis
1. Was sind Variablen?
Variablen sind Speicherplätze für Daten in unserem Programm. Nicht mehr und nicht weniger. Alle Daten, die wir in unserem Programm zur Laufzeit, also zur Ausführungszeit des Programms benötigen und speichern müssen, schreiben wir in Variablen.
Wenn wir zum Beispiel in unserem Programm oben in der Ecke den Namen des Benutzers anzeigen lassen möchten, muss der Benutzername in einer Variable geschrieben stehen. Nur so wissen wir, welcher Name dort stehen muss.
Programmieren wir ein Videospiel, in dem unsere Spielfigur eine gewisse Anzahl an Lebenspunkten besitzt, müssen wir diese Lebenspunkte ebenfalls in einer Variable speichern. Dadurch können wir immer feststellen, wie viele Leben die Figur noch übrig hat und wann es beispielsweise zum Game Over kommen soll.
Alle Daten, die für die Ausführung relevant sind, schreiben wir in Variablen. Aber wie setzt sich so eine Variable nun eigentlich zusammen? Eine Variable setzt sich in C# aus einem Bezeichner, einem Wert und einem Datentyp zusammen.
Der Bezeichner ist im Grunde einfach der Name der Variable. Der Wert ist, wie der Name bereits verrät, der Wert, der sich in der Variable befindet. Der Datentyp bestimmt, welche Art von Wert in die Variable gespeichert werden kann. Dieses Thema werden wir uns aber später noch genauer ansehen.
Auf dem folgenden Bild siehst du ein Beispiel, das die einfache Nutzung einer Variable demonstriert:
Für das Beispiel habe ich eine Variable namens "alter" erstellt und dieser direkt den Wert 25 zugewiesen. Die Variable ist vom Typ int, was bedeutet, dass wir in ihr lediglich Integer, also Ganzzahlenwerte speichern können.
Sehen wir uns nun einmal die verschiedenen Komponenten genauer an. Wie bereits erwähnt, ist der Datentyp der Variable int. Hier könnte auch beispielsweise string stehen, wodurch wir es mit einer Variable zu tun hätten, in der wir nur Textwerte speichern könnten. Strings sind in der Programmierung Textwerte.
Würde anstelle von int hingegen bool stehen, könnten wir lediglich True- oder False-Werte in die Variable speichern.
Neben dem Datentyp sehen wir dann den Namen der Variable, anders gesagt, den Bezeichner. Die Variable heißt "alter". Anschließend habe ich ihr noch den Wert 25 zugewiesen.
Wie du auf der Abbildung oben sehen kannst, rufe ich anschließend im Programm Console.WriteLine auf, um in der Konsole Folgendes auszugeben:
Ich bin alter Jahre alt. Hier verwende ich die Variable alter stellvertretend für den Wert, der sich in dieser befindet. Das heißt, ich benutze den Namen, also den Bezeichner der Variable, sozusagen als Platzhalter für den Wert 25.
Wenn wir das Programm so ausführen würden, sähe die Ausgabe folgendermaßen aus:
Denn: In der Variable steckt der Wert 25.
Da es sich hierbei um ein einfaches Beispiel handelt, sehen wir uns nun einmal in der Praxis in Visual Studio an, wie man eine Variable verwendet.
2. Eine C# Variable in der Praxis erstellen
Bevor wir in unserem Programm eine Variable verwenden können, müssen wir diese erst einmal erstellen. Im Fachjargon sagt man dazu auch, man deklariert eine Variable. Man macht sie also im Programm bekannt.
Für unser Praxisbeispiel möchten wir nun eine Variable deklarieren, die vom Typ int ist, sodass wir in diese Ganzzahlen speichern können. Als Bezeichner wählen wir wieder alter. Zuerst schreiben wir also den Datentyp int und anschließend den Bezeichner, also den Namen der Variable. Um die Anweisung abzuschließen, setzen wir noch ein Semikolon an das Ende der Zeile:
Das ist also die Deklaration der Variable alter, welche vom Typ Integer ist. Beim Deklarieren einer Variable weist man dieser noch nicht direkt einen Wert zu. Die erste Wertzuweisung nennt man Initialisierung. Mit der ersten Zuweisung eines Wertes zu einer Variable initialisiert man diese also. Das funktioniert zum Beispiel folgendermaßen:
Damit haben wir die Variable alter also nicht nur deklariert, sondern auch initialisiert. Die Deklaration und die Initialisierung können auch zusammengefasst werden, indem wir nach der Deklaration mit dem Zuweisungsoperator (=-Zeichen) direkt einen Wert zuweisen:
Nachdem wir eine Variable deklariert und initialisiert haben, können wir den Inhalt davon in unserem Programm überall in dem Scope, also im Wirkungsbereich, in dem sich die Variable befindet, lesen.
Darum geht es allerdings im heutigen Beitrag noch nicht, da wir uns ohnehin nur im Scope der Main-Methode befinden. Die Variable können wir jetzt zum Beispiel in einer Konsolenausgabe verwenden.
Lassen wir also einmal mit Console.WriteLine den Wert von alter auf der Konsole ausgeben. Da wir den Wert lesen möchten, schreiben wir den Bezeichner dieser Variable, also alter, zwischen die Klammern. Damit übergeben wir ihn an die WriteLine-Methode:
Wenn wir das Programm jetzt starten, sehen wir in der Konsole den Wert 25:
Wir können auch nach der Deklaration und Initialisierung den Variablen neue Werte zuweisen. Wenn wir zum Beispiel die Variable alter mit dem Wert 25 initialisieren und ihr direkt im Anschluss die Zahl 30 zuweisen, überschreiben wir damit die 25 mit dem Wert 30:
Nun erhalten wir in der Ausgabe den Wert 30:
Wie du also gesehen hast, können wir direkt neue Werte zuweisen, indem wir den Bezeichner an einer anderen Stelle im Code schreiben.
3. Was sind C# Datentypen?
Einfach gesagt bestimmen in C# Datentypen, welche Art von Wert wir in einer Variable speichern können. In C# können wir also nicht einfach eine Variable erstellen und darin jeden beliebigen Wert speichern. Stattdessen müssen wir für die Variable einen Datentyp festlegen und können darin nur Werte speichern, die mit diesem Datentyp kompatibel sind.
Wenn wir beispielsweise eine Variable vom Typ Integer erstellen, können wir in dieser nur Ganzzahlen speichern. Nicht aber Strings, also Textwerte oder andere Arten von Werten. So beschränken die C# Datentypen also, was wir einer Variable zuweisen können.
Wichtig: Hat man den Datentyp einmal festgelegt, kann er im Nachhinein nicht mehr für eine Variable geändert werden.
Aber wofür machen wir das Ganze? Die C# Datentypen sorgen dafür, dass wir immer genau wissen, welche Art von Wert in eine Variable hineingehört und welche eben nicht. Das sorgt für mehr Sicherheit im Code und eine geringere Fehlerquote. Denn so kommen wir nicht durcheinander und schreiben beispielsweise Werte in Variablen, die in dem Kontext nicht dort hineingehören.
Sehen wir uns an dieser Stelle einmal ein Beispiel für verschiedene C# Datentypen an:
Zu Beginn sehen wir eine Integer Variable, in die ich eine Ganzzahl gespeichert habe, da Integer schließlich Ganzzahlen sind.
Anschließend sehen wir eine Variable vom Typ String mit dem Bezeichner name und einem Textwert. Dieser Textwert ist die Zeichenkette „Peter“. Textwerte müssen wir in C# immer zwischen zwei Anführungszeichen schreiben, damit sie das Programm auch als solche erkennt.
Danach habe ich einen Double mit dem Wert 1,82 erstellt. Das Komma ist als Punkt dargestellt, da immer die amerikanische Schreibweise verwendet wird. Doubles sind im Grunde Fließkommazahlen mit Nachkommastellen und einer doppelten Genauigkeit. Der Float hat im Vergleich dazu nur eine einfache Genauigkeit.
In der nächsten Zeile sehen wir einen Decimal, bei dem es sich um eine besonders genaue Dezimalzahl handelt. Wie bereits erwähnt, sind Double und Float Fließkommazahlen, der Decimal hingegen eine genaue Dezimalzahl. Den Decimal verwendet man zum Beispiel dann, wenn man Geldwerte speichern möchte, da hierfür ein exaktes Ergebnis extrem wichtig ist. In unserem Beispiel habe ich die Dezimalzahl Kontostand genannt und die Zahl 4300.31 darin gespeichert.
Wichtig an dieser Stelle: Am Ende der Zahl müssen wir noch ein M anhängen. Das M ist ein sogenanntes Suffix. Manchen Zahlenwerten müssen wir dieses anhängen, da der Compiler einen Wert ohne das Suffix sonst als gewöhnlichen Double Wert erkennt. Beim Decimal hängen wir also ein M am Ende der Zahl an, beim Float ist es ein F.
In den unteren Zeilen sehen wir noch einige Konsolenausgaben. Führen wir das Ganze nun aus, erhalten wir folgende Ausgabe:
Das sind also C# Datentypen! Neben den heute erwähnten C# Datentypen existieren noch einige mehr. Ein weiteres Beispiel ist der Boolean, der dann interessant wird, wenn wir über if-Abfragen sprechen.
Booleans sind Wahrheitswerte, das heißt: Ein Boolean kann entweder den Wert True oder False annehmen, also wahr oder falsch sein. Verwendung für diesen Datentyp finden wir vor allem dann, wenn es um die bedingte Ausführung von Code geht. Das heißt, wenn für dessen Ausführung eine bestimmte Bedingung erfüllt werden muss. Dieses Thema werden wir uns allerdings noch genauer im Beitrag über if-Statements ansehen.
Neben dem Boolean existieren noch einige weitere Datentypen, die wir im Verlauf dieser Tutorialreihe noch kennenlernen werden.