switch (C#-Referenz)
Aktualisiert: November 2007
Die switch-Anweisung stellt eine Steuerungsanweisung dar, die mehrere Auswahlmöglichkeiten und Enumerationen behandelt, indem die Steuerung an eine der case-Anweisungen innerhalb ihres Texts übergeben wird. Beispiel:
Beispiel
int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}
Die Steuerung wird an die case-Anweisung übergeben, die dem Wert des Schalters entspricht. Die switch-Anweisung kann eine beliebige Anzahl von case-Instanzen enthalten. Zwei case-Anweisungen dürfen jedoch nicht denselben Wert aufweisen. Die Ausführung des Anweisungstexts beginnt mit der ausgewählten Anweisung und wird fortgesetzt, bis die break-Anweisung dem case-Text die Steuerung entzieht. Nach jedem case-Block muss eine Sprunganweisung, wie break, stehen. Dies gilt auch für den letzten Block, unabhängig davon, ob er eine case-Anweisung oder eine default-Anweisung enthält. Bis auf eine Ausnahme unterstützt C# (im Gegensatz zur switch-Anweisung in C++) kein implizites Fortsetzen des Vorgangs von einer case-Bezeichnung zu einer anderen. Die eine Ausnahme ist, wenn eine case-Anweisung keinen Code enthält.
Wenn keiner der case-Ausdrücke zu dem switch-Wert passt, geht die Steuerung auf die Anweisungen über, die der optionalen default-Bezeichnung folgen. Wenn keine default-Bezeichnung vorhanden ist, wird der switch-Anweisung die Steuerung entzogen.
class SwitchTest
{
static void Main()
{
Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large");
Console.Write("Please enter your selection: ");
string s = Console.ReadLine();
int n = int.Parse(s);
int cost = 0;
switch(n)
{
case 1:
cost += 25;
break;
case 2:
cost += 25;
goto case 1;
case 3:
cost += 50;
goto case 1;
default:
Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
break;
}
if (cost != 0)
{
Console.WriteLine("Please insert {0} cents.", cost);
}
Console.WriteLine("Thank you for your business.");
}
}
/*
Sample Input: 2
Sample Output:
Coffee sizes: 1=Small 2=Medium 3=Large
Please enter your selection: 2
Please insert 50 cents.
Thank you for your business.
*/
- Im vorangehenden Beispiel wurde die Ganzzahltypvariable n für die switch-case-Anweisungen verwendet. Beachten Sie, dass die Zeichenfolgenvariable s auch direkt eingesetzt werden kann. In diesem Fall können Sie switch-case-Anweisungen wie die folgenden verwenden:
switch(s)
{
case "1":
// ...
case "2":
// ...
}
Im folgenden Beispiel wird veranschaulicht, dass bei leeren case-Bezeichnungen von einer case-Bezeichnung zur nächsten fortgefahren werden kann.
class SwitchTest2
{
static void Main()
{
int n = 2;
switch(n)
{
case 1:
case 2:
case 3:
Console.WriteLine("It's 1, 2, or 3.");
break;
default:
Console.WriteLine("Not sure what it is.");
break;
}
}
}
// Output: It's 1, 2, or 3.
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
5.3.3.6 switch-Anweisung
8.7.2 Die switch-Anweisung