Gibt es eine Möglichkeit, mehrere Case-Anweisungen zu durchlaufen, ohne wiederholt "Case-Wert" anzugeben?
Ich weiß, dass dies funktioniert:
switch (value)
{
case 1:
case 2:
case 3:
//do some stuff
break;
case 4:
case 5:
case 6:
//do some different stuff
break;
default:
//default stuff
break;
}
aber ich würde gerne etwas wie das hier machen:
switch (value)
{
case 1,2,3:
//Do Something
break;
case 4,5,6:
//Do Something
break;
default:
//Do the Default
break;
}
Ist diese Syntax, an die ich denke, aus einer anderen Sprache, oder übersehe ich etwas?
Für die zweite von Ihnen erwähnte Methode gibt es weder in C++ noch in C# eine Syntax.
An Ihrer ersten Methode ist nichts auszusetzen. Wenn Sie jedoch sehr große Bereiche haben, verwenden Sie einfach eine Reihe von if-Anweisungen.
Diese Syntax stammt aus der Visual Basic [Select...Case-Anweisung] (https://msdn.microsoft.com/en-us/library/cy37t14y.aspx?f=255&mspperror=-2147217396#Anchor_3):
Dim number As Integer = 8
Select Case number
Case 1 To 5
Debug.WriteLine("Between 1 and 5, inclusive")
' The following is the only Case clause that evaluates to True.
Case 6, 7, 8
Debug.WriteLine("Between 6 and 8, inclusive")
Case Is < 1
Debug.WriteLine("Equal to 9 or 10")
Case Else
Debug.WriteLine("Not between 1 and 10, inclusive")
End Select
Sie können diese Syntax in C# nicht verwenden. Stattdessen müssen Sie die Syntax aus Ihrem ersten Beispiel verwenden.
Eine weniger bekannte Facette von switch in C# ist, dass es sich auf den operator= stützt, und da er überschrieben werden kann, könnte man etwas wie dieses haben:
string s = foo();
switch (s) {
case "abc": /.../ break;
case "def": /.../ break;
}