Skip to main content

Switch Expressions

Switch Expression

string currentColor = Console.ReadLine();
string action = currentColor switch

{
"Rot" => "Anhalten",
"Gelb" => "Warten",
"Grün" => "Fahren",
_ => throw new InvalidOperationException("Ungültige Farbe")
};

Console.WriteLine(action);

Property Pattern

Eigenschaften von Objekten direkt im case-Ausdruck überprüfen

public class Punkt
{
public int X { get; set; }
public int Y { get; set; }
}

Punkt p = new Punkt { X = 1, Y = 2 };
string beschreibung = p switch
{
{ X: 0, Y: 0 } => "Ursprung",
{ X: 0, Y: var y } => $"Y-Achse, Y={y}",
{ X: var x, Y: 0 } => $"X-Achse, X={x}",
{ X: var x, Y: var y } => $"Punkt ({x}, {y})"
};

Console.WriteLine(beschreibung); // Ausgabe: Punkt (1, 2)

Tuple Pattern

mehrere Werte gleichzeitig in einem Tupel überprüfen

(int x, int y) = (1, 2);
string position = (x, y) switch
{
(0, 0) => "Ursprung",
(0, _) => "Y-Achse",
(_, 0) => "X-Achse",
(_, _) => "Andere"
};

Console.WriteLine(position); // Ausgabe: Andere

When-Klausel

zusätzliche Bedingungen mit when hinzufügen

Console.Write("Enter a number: ");
int number = Convert.ToInt32(Console.ReadLine());

switch (number)
{
case var x when x < 0:
Console.WriteLine("Less than 0");
break;
case var x when x >= 0 && x <= 3:
Console.WriteLine("Between 0 and 3");
break;
case var x when x > 3:
Console.WriteLine("Higher than 3");
break;
};

string message = number switch
{
var x when x < 0 => "Less than 0",
var x when x >= 0 && x <= 3 => "Between 0 and 3",
var x when x > 3 => "Higher than 3",
};
Console.WriteLine(message);