switch (Référence C#)

Mise à jour : novembre 2007

L'instruction switch est une instruction de contrôle qui traite les sélections et les énumérations multiples en transmettant le contrôle à une des instructions case contenues dans son corps, comme dans l'exemple suivant :

Exemple

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;
}

Le contrôle est transféré à l'instruction case qui correspond à la valeur du commutateur. L'instruction switch peut comprendre n'importe quel nombre d'instances case, mais deux constantes case au sein de la même instruction ne peuvent pas avoir la même valeur. L'exécution du corps de l'instruction commence à l'instruction sélectionnée et continue jusqu'à ce que l'instruction break transfère le contrôle en dehors du corps de case. Une instruction de saut telle qu'un break est requise après chaque bloc case, y compris le dernier bloc si c'est une instruction case ou une instruction default. A une exception près, (contrairement à l'instruction switch du C++), C# ne permet pas de retomber implicitement d'une étiquette case à une autre. L'exception en question est le cas où une instruction case n'a aucun code.

Si aucune expression case ne correspond à la valeur du commutateur, le contrôle est transféré aux instructions qui suivent l'étiquette default facultative. S'il n'y a aucune étiquette default, le contrôle est transféré à l'extérieur de switch.

    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.
    */
  • Dans l'exemple précédent, une variable de type intégral, n, a été utilisée pour les valeurs case de l'instruction switch. Notez que vous pouvez également utiliser la variable chaîne, s, directement. Dans ce cas, vous pouvez utiliser des cas switch comme ci-après :
switch(s)
{
    case "1":
        // ...
    case "2":
        // ...
}

L'exemple suivant affiche que le passage d'une étiquette case à une autre est autorisé pour les étiquettes case vides.

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.

Spécification du langage C#

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 5.3.3.6 Instructions switch

  • 8.7.2 L'instruction switch

Voir aussi

Concepts

Guide de programmation C#

Référence

Mots clés C#

The switch Statement

if-else (Référence C#)

Autres ressources

Référence C#