Wie muss ein Schalterausdruck geschrieben werden, um mehrere Fälle zu unterstützen, die dasselbe Ergebnis zurückgeben?
Mit c # vor Version 8 kann ein Schalter wie folgt geschrieben werden:
var switchValue = 3;
var resultText = string.Empty;
switch (switchValue)
{
case 1:
case 2:
case 3:
resultText = "one to three";
break;
case 4:
resultText = "four";
break;
case 5:
resultText = "five";
break;
default:
resultText = "unkown";
break;
}
Wenn ich die Ausdruckssyntax von c # Version 8 verwende, ist dies wie folgt:
var switchValue = 3;
var resultText = switchValue switch
{
1 => "one to three",
2 => "one to three",
3 => "one to three",
4 => "four",
5 => "five",
_ => "unknown",
};
Meine Frage lautet also: Wie werden die Fälle 1, 2 und 3 zu nur einem Schalter-Fall-Arm, damit der Wert nicht wiederholt werden muss?
Update per Vorschlag von " Rufus L ":
Für mein gegebenes Beispiel funktioniert dies.
var switchValue = 3;
var resultText = switchValue switch
{
var x when (x >= 1 && x <= 3) => "one to three",
4 => "four",
5 => "five",
_ => "unknown",
};
Aber es ist nicht genau das, was ich erreichen möchte. Dies ist immer noch nur ein Fall (mit einer Filterbedingung), nicht mehrere Fälle, die zum gleichen Ergebnis auf der rechten Seite führen.
when
ist sowieso weitaus mächtiger als fall-through. Sie könnenContains
mit einem Array von Werten verwenden, wenn Sie möchten.