English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Instruction switch C#

Lorsque vous devez tester une variable pour trois conditions ou plus, vous pouvez utiliser l'instruction switch à la place de l'instruction if else. Ici, vous découvrirez l'instruction switch et comment l'utiliser efficacement dans un programme C#.

C'est la syntaxe générale de l'instruction switch.

 Syntaxe :

switch(expression/variable)
{
    case constante-value:
        //Instructions à exécuter;
        break;
    default : 
        //Instructions à exécuter;
        break;
}

L'instruction switch commence par le mot-clé switch, qui contient une expression de correspondance ou une variable dans les parenthèses switch(expression de correspondance match expression). Le résultat de cette expression de correspondance ou de la variable sera testé selon les conditions de case spécifiées dans les accolades {} à l'intérieur. Les cas doivent être spécifiés par des valeurs constantes uniques et terminés par un deux-points :. Chaque cas inclut une ou plusieurs instructions à exécuter. Si la valeur constante et l'expression de correspondance/La valeur de la variable égale, exécutez le cas. L'instruction switch peut également inclure une étiquette de défaut optionnelle. Si aucun cas n'est exécuté, l'étiquette de défaut est exécutée. Les mots-clés break, return ou goto sont utilisés pour sortir de la situation switch.

L'exemple suivant montre une instruction switch simple.

int x = 10;
switch (x
{ 
    case 5:
        Console.WriteLine("La valeur de x est5");
        break;
    case 10:
        Console.WriteLine("La valeur de x est10");
        break;
    case 15:
        Console.WriteLine("La valeur de x est15");
        break;
    default :
        Console.WriteLine("Valeur inconnue");
        break;
}
Sortie :
La valeur de x est10

Ci-dessus, l'instruction switch (x) contient une variable x whose value will be compared with each case La valeur correspondante. Le switch ci-dessus contient des valeurs constantes5、10et15Les trois cas. Il contient également une étiquette default, si aucune valeur de case ne correspond à switch Variable/L'expression correspond, exécutez cette étiquette. Chaque cas commence après : et contient une instruction à exécuter. La valeur de X correspond à la valeur du deuxième cas10: Correspondance, donc la valeur de sortie est10

L'instruction switch peut inclure n'importe quelle expression non vide qui retourne un type de valeur char, string, bool, int ou enum.

L'instruction switch peut également inclure une expression, whose result will be tested against each case at runtime.

int x = 125;
switch (x % 2)
{ 
    case 0 :
        Console.WriteLine($"{x} est pair");
        break;
    case 1:
        Console.WriteLine($"{x} est impair");
        break;
}
Sortie :
125est impair

Cas switch

Les cas switch doivent être des valeurs constantes uniques. Ils peuvent être bool, char, string, integer, enum ou les types correspondants qui peuvent être null.

Attention

En C# 7Après .0, un cas switch peut contenir des valeurs non uniques. Dans ce cas, le premier cas correspondant sera exécuté.

Considérez l'exemple de l'instruction switch simple suivante.

string statementType = "switch";
switch (statementType)
{
    case "if.else":
        Console.WriteLine("instruction if...else");
        break;
    case "ternary":
        Console.WriteLine("Opérateur ternaire");
        break;
    case "switch":
        Console.WriteLine("instruction switch");
        break;
}
Sortie :
instruction switch

Il est possible de combiner plusieurs cases pour exécuter les mêmes instructions.

int x = 5;
switch (x
{ 
    case 1:
        Console.WriteLine("x = 1");
        break;
    case 2:
        Console.WriteLine("x = 2");
        break;
    case 4:
    case 5:
        Console.WriteLine("x = 4 ou x = 5");
        break;
    default :
        Console.WriteLine("x > 5");
        break;
}

Chaque case doit être explicitement quittée en utilisant break, return, goto ou autre moyen pour s'assurer que le contrôle de programme quitte un case et n'entre pas dans le cas par défaut.

Voici l'utilisation de la clé return.

static void Main(string[] args)
{
    int x = 125;
    Console.Write(isOdd(x) ? "Valeur pair" : "Valeur impaire");
}
static bool isOdd(int i, int j)
{
    switch (x % 2)
    { 
        case 0 :
            return true;
        case 1:
            return false;
        default :
            return false;
    }
    
    return false;
}
Sortie :
Valeur impaire

L'absence de instructions break, return ou goto, ou des cas switch avec des constantes égales produira une erreur à la compilation.

int x = 1;
switch (x
{ 
    case 0 :
        Console.WriteLine($"{x} est une valeur pair");
        break;
    case 1:
        Console.WriteLine($"{x} est une valeur impaire");
        break;
    case 1: // Erreur-Les contrôles ne peuvent pas quitter un étiquette case (" case 1:) entrer dans un autre étiquette case
        Console.WriteLine($"{x} est une valeur impaire");
    defaut:
        Console.WriteLine($"{x} est une valeur impaire");
        break;
}

Instructions switch imbriquées

Une instruction switch peut être utilisée à l'intérieur d'une autre instruction switch.

int j = 5;
switch (j
{
    case 5:
        Console.WriteLine(5);
        switch (j - 1)
        {
            case 4:
            Console.WriteLine(4);
            switch (j - 2)
            {
                case 3:
                Console.WriteLine(3);
                break;
            }
            break;
        }
        break;
    case 10:
        Console.WriteLine(10);
        break;
    case 15:
        Console.WriteLine(15);
        break;
    default :
        Console.WriteLine(100);
        break;
}
Sortie :
5 
4 
3
 Points à retenir :
  1. L'instruction switch est une méthode de remplacement pour l'instruction if else.

  2. L'instruction switch teste les correspondances de l'expression de match pour un ensemble de constantes spécifiées comme case./Variable.

  3. Pour quitter une case dans une instruction switch, il est nécessaire que les mots-clés break, return ou goto soient utilisés.

  4. La directive switch peut inclure un étiquette optional default, qui sera exécutée si aucune case n'est exécutée.

  5. Le compilateur C# donnera des erreurs concernant les : manquants dans les cases, les valeurs constantes, et quittera la case.

  6. À partir de C#7A partir de .0, l'expression conditionnelle switch peut inclure des valeurs non uniques. Dans ce cas, la première situation correspondante sera exécutée.