In C# gibt es verschiedene Auswahlanweisungen, die es dem Programm ermöglichen, basierend auf einer Bedingung oder einem Wert verschiedene Wege einzuschlagen. Die wichtigsten Auswahlanweisungen sind:
if
else
else if
switch
case
if
-Anweisung¶
Die if
-Anweisung führt einen Codeblock aus, wenn eine Bedingung true
ist. Der allgemeine Aufbau sieht folgendermaßen aus:
int number = 5;
if (number > 0)
{
Console.WriteLine("Die Zahl ist positiv.");
}
Die Zahl ist positiv.
In diesem Beispiel wird die Nachricht „Die Zahl ist positiv.“ nur dann ausgegeben, wenn number
größer als 0 ist.
else
-Anweisung¶
Die else
-Anweisung wird verwendet, um einen alternativen Codeblock auszuführen, wenn die Bedingung in der if
-Anweisung false
ist:
int number = -5;
if (number > 0)
{
Console.WriteLine("Die Zahl ist positiv.");
}
else
{
Console.WriteLine("Die Zahl ist nicht positiv.");
}
Die Zahl ist nicht positiv.
Hier wird „Die Zahl ist nicht positiv.“ ausgegeben, weil number
negativ ist.
else if
-Anweisung¶
Mit der else if
-Anweisung kannst du mehrere Bedingungen hintereinander überprüfen:
int number = 0;
if (number > 0)
{
Console.WriteLine("Die Zahl ist positiv.");
}
else if (number < 0)
{
Console.WriteLine("Die Zahl ist negativ.");
}
else
{
Console.WriteLine("Die Zahl ist null.");
}
Die Zahl ist null.
In diesem Fall wird „Die Zahl ist null.“ ausgegeben.
switch
-Anweisung¶
Die switch
-Anweisung ermöglicht eine Auswahl basierend auf dem Wert einer Variablen. Jeder mögliche Wert wird in einem case
-Zweig definiert:
int day = 2;
switch (day)
{
case 1:
Console.WriteLine("Montag");
break;
case 2:
Console.WriteLine("Dienstag");
break;
case 3:
Console.WriteLine("Mittwoch");
break;
default:
Console.WriteLine("Ungültiger Tag");
break;
}
Ungültiger Tag
Hier wird „Mittwoch“ ausgegeben, da day
den Wert 3 hat.
case
-Anweisung¶
Jeder case
-Zweig innerhalb eines switch
-Blocks wird ausgeführt, wenn der Wert mit dem switch
-Argument übereinstimmt. Der default
-Zweig wird ausgeführt, wenn keiner der definierten case
-Zweige zutrifft.
Tabelle: Syntax der switch
-Anweisung¶
Element | Beschreibung |
---|---|
switch |
Leitet eine Auswahlanweisung basierend auf dem Wert einer Variablen ein. |
case |
Definiert einen Zweig, der ausgeführt wird, wenn der Wert mit dem switch -Argument übereinstimmt. |
default |
Wird ausgeführt, wenn keiner der case -Zweige zutrifft. |
break |
Beendet die Ausführung des aktuellen Zweigs und verlässt den switch -Block. |
switch
mit Musterabgleich¶
Ab C# 7.0 kannst du in der switch
-Anweisung auch Muster verwenden, um flexiblere Bedingungen zu erstellen:
object obj = "string";
obj = 1;
switch (obj)
{
case int i when i > 0:
Console.WriteLine("Positive ganze Zahl");
break;
case int i when i < 0:
Console.WriteLine("Negative ganze Zahl");
break;
case string s when s == "Hallo":
Console.WriteLine("Hallo");
break;
default:
Console.WriteLine("Unbekannter Typ oder null");
break;
}
Hallo
In diesem Fall wird „Positive ganze Zahl“ ausgegeben.
switch
-Ausdruck¶
Der switch
-Ausdruck ist eine kompakte Alternative zur herkömmlichen switch
-Anweisung. Er wurde in C# 8.0 eingeführt:
int number = 2;
string day = number switch
{
1 => "Montag",
2 => "Dienstag",
3 => "Mittwoch",
_ => "Ungültiger Tag"
};
Console.WriteLine(day);
Dienstag
Hier gibt der switch
-Ausdruck „Dienstag“ zurück, da number
den Wert 2 hat.
Ternary Operator in C#¶
Der ternäre Operator in C# ist eine kompakte Möglichkeit, eine Bedingung zu prüfen und basierend darauf einen von zwei Werten zurückzugeben. Der ternäre Operator wird auch als bedingter Operator bezeichnet, da er auf einer Bedingung (true
oder false
) basiert. Er hat die folgende Syntax:
condition ? value_if_true : value_if_false;
Der Name "ternary" leitet sich davon ab, dass der Operator drei Operanden verwendet:
- Eine Bedingung
- Den Wert, der zurückgegeben wird, wenn die Bedingung
true
ist - Den Wert, der zurückgegeben wird, wenn die Bedingung
false
ist
Dies unterscheidet ihn von Operatoren wie +
, -
, *
usw., die nur zwei Operanden verwenden, und daher als binäre Operatoren bezeichnet werden.
Beispiel für den ternären Operator¶
Angenommen, wir möchten entscheiden, ob der aktuelle Spieler X
oder O
ist, und basierend darauf eine Nachricht anzeigen:
char currentPlayer = 'X';
string message = currentPlayer == 'X' ? "Spieler X ist an der Reihe" : "Spieler O ist an der Reihe";
Console.WriteLine(message);
Erläuterung:
- Die Bedingung
currentPlayer == 'X'
wird zuerst geprüft. - Wenn diese Bedingung
true
ist, wird der Wert"Spieler X ist an der Reihe"
zurückgegeben. - Wenn die Bedingung
false
ist, wird der Wert"Spieler O ist an der Reihe"
zurückgegeben.
In diesem Beispiel wird der ternäre Operator verwendet, um die Entscheidung kompakter darzustellen, ohne dass ein if
-Block benötigt wird. Dies kann den Code lesbarer und kürzer machen, besonders wenn einfache Bedingungen geprüft werden.