Programmieren mit C-Sharp, Teil 6 Datentypen, Variablen und Operatoren in C#

Autor / Redakteur: Thomas Joos / Stephan Augsten |

Datentypen, Variablen und Operatoren gehören zu den wichtigen Bereichen bei der Programmierung mit C#. In diesem Beitrag geben wir einen Überblick über jene Elemente, die beim Programmieren mit C# eine wichtige Rolle spielen.

Anbieter zum Thema

Bei den Datentypen in C# ist einiges zu beachten, so lassen sich Wahrheitswerte nicht in Integer konvertieren.
Bei den Datentypen in C# ist einiges zu beachten, so lassen sich Wahrheitswerte nicht in Integer konvertieren.
(Bild: Microsoft)

Variablen sind Speicherbereiche, in denen Daten gespeichert und wieder ausgelesen werden. Innerhalb von Programmen können Variablen ständig ihre zugewiesenen Werte ändern. Das kann durch eine feste Definition von Werten erfolgen, oder auf Basis von Berechnungen und Informationen, die durch Eingabe erfasst werden, wie zum Beispiel in Formularen.

In C# werden Variablen typisiert. Es wird dadurch eine bestimmte Menge an Speicherplatz für eine Variable zugewiesen. Die generelle Syntax zum Zuweisen von Variablen ist:

<Datentyp> <Name der Variablen>;

Um in C# eine Variable zu deklarieren und ihr gleichzeitig einen Wert zuzuweisen, könnte der Befehl beispielsweise wie folgt aussehen:

int a = 10;

Durch den Befehl wird eine Variable „a“ mit dem Datentyp „int“ deklariert, als Wert wird in diesem Beispiel der Wert 10 gespeichert. Wenn eine Variable definiert und typisiert wird, also in diesem Beispiel „int a“, erfolgt normalerweise auch eine Initialisierung. Dabei wird ein Wert der definierten Variablen zugeordnet.

Der Datentyp von Variablen wird wie gesehen mit einem Schlüsselwort definiert. In diesem Beispiel ist es ein „int“, sprich Integer. Durch die Definition der Variable „a“ als „int“ dürfen keine anderen Werte in der Variablen gespeichert werden, zum Beispiel keine Kommazahlen. Der entsprechende Datentyp hieße

„float“.

Grundsätzlich besteht auch die Möglichkeit, Variablen mit „var“ zu definieren. In diesem Fall legt der Compiler später den Datentyp auf Basis des zugewiesenen Wertes bei der Initialisierung fest. Die verschiedenen Typen und Variablen sind in der Dokumentation zu C# bei Microsoft zu finden. Wird ein fester Wert angegeben, dann prüft Visual Studio, ob der Wert der Definition des Datentyps entspricht.

Neben dem Datentyp und dem Namen kann einer Variablen auch ein Wertebereich zugewiesen werden. Der Wertebereich legt fest, wie groß der Speicherbereich für die Variable sein soll. Wird zum Beispiel „short“ verwendet, wird der Speicherbereich kleiner als bei „int“ definiert. Für „int“ werden 4 Byte als Speicher reserviert, für „short“ nur 2 Byte.

Sollen Gleitkommawerte gespeichert werden, zum Beispiel 1,567, lassen sich ebenfalls verschiedene Datentypen verwenden. Diese regeln unter anderem die Präzision: „float“ erlaubt sieben Nachkommastellen, „double“ 15 Nachkommastellen. Zusätzlich existiert noch der Datentyp „decimal“, der weitaus präziser ist, allerdings auch langsamer verarbeitet wird. Wenn ein Entwickler eine Variable definiert, sollte also im Vorfeld geplant werden, welcher Datentyp genutzt werden soll.

Das Typensystem von C# ist so definiert, dass ein Wert eines beliebigen Typs als Objekt behandelt werden kann. Jeder Typ in C# leitet sich direkt oder indirekt vom Objektklassentyp ab. Im folgenden Beispiel wird ein int Wert in object und wieder zurück in int umgewandelt.

using System;
class BoxingExample {
   static void main()
   {
      int i = 123;
      object o = i; // Boxing
      int j = (int)o; // Unboxing
   }
}

Generell ist es sinnvoll als Bezeichnung für eine Variable einen String zu verwenden, aus dem klar hervorgeht, um was in der Variablen geht. Beschreibende Namen machen generell Code besser lesbar. Ein Bezeichner sollte idealerweise mit einem Kleinbuchstaben anfangen.

Die Initialisierung von Variablen, also die Zuweisung von Werten kann mit verschiedenen Ausdrücken erfolgen. Die Zuweisung eines Literals, also eines konkreten Wertes, wie bei „int i = 123;“ ist genauso möglich, wie eine Berechnung. Auch Methoden können Variable erzeugen, genauso wie das Verwenden eines Konstruktors.

Die Zuweisung eines Wertes kann direkt bei der Definition der Variablen erfolgen. Es ist aber auch eine spätere Änderung oder eine spätere Initialisierung möglich:

decimal price;
price = a * 1.19;

Operatoren in C#

Operatoren spielen bei der Arbeit mit Variablen eine wichtige Rolle, sie dazu dienen, Variablen einen Wert zuzuweisen. Mit dem Gleichheitszeichen wird im Beispiel „int a = 10;“ der Wert 10 der Variable „a“ als ganze Zahl (int) zugewiesen. Verschiedene Typen von Operatoren können für Zuweisungen genutzt werden. Microsoft zeigt die verschiedenen Operatoren und deren Funktion in der Dokumentation zu C# .

Operatoren können auch Berechnungen durchführen lassen. Ein Beispiel dafür ist:

var a = 2 + 2 * 2;
Console.WriteLine(a);

Operatoren können auch als Vergleichsoperatoren genutzt werden. Hier ist es auch wichtig, dass Operatoren in C# Prioritäten haben. Werden in einer Befehlszeile mehrere Operatoren eingesetzt, behandelt Visual Studio die Operatoren mit einer bestimmten Priorität.

Die Prioritäten lassen sich ignorieren, indem bestimmte Abschnitte in Klammern gesetzt werden. Die Klammer wird immer zuerst ausgewertet, bevor der Rest eines Ausdrucks ausgewertet wird:

int a = 15;
int b = 20;
bool c = a == b;

In diesem Beispiel wird durch „bool c = a == b;“ überprüft, ob der Wert der Variablen „a“ dem Wert der Variablen „b“ entspricht. Ist das der Fall, wird der Variablen „c“ der Wert „true“ zugewiesen. Ist der Wert nicht identisch bekommt die Variable „c“ den Wert „false“.

Der Vergleichsoperator „==“ hat eine höhere Priorität als „=“, wird also zuerst ausgewertet. Soll sichergestellt werden, dass die Auswertung von „==“ vor der Auswertung von „=“ durchgeführt wird, kann auch der folgende Ausdruck verwendet werden:

bool c = (a == b);

Mit Klammern lassen sich auch Berechnungen verändern. So ergeben zum Beispiel die nächsten beiden Zeilen zwei verschiedene Ergebnisse:

int a = 13 / 5 / 2;
int b = 13 / (5 / 2);

Haben Operatoren den gleichen Rang, werden sie in der Reihenfolge ausgeführt, in der sie geschrieben sind. Links-assoziative Operatoren werden von links nach rechts ausgewertet:

a + b - c wird als (a + b) - c bewertet.

Rechts-assoziative Operatoren werden in der Reihenfolge von rechts nach links bewertet. Beispiel:

x = y = z wird als x = (y = z) bewertet.

(ID:46218345)