Freigeben über


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

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

C#-Schlüsselwörter

The switch Statement

if-else (C#-Referenz)

Weitere Ressourcen

C#-Referenz