Parcours
/
C#
C#
/
Programme
/
Instructions `switch`
In

Instructions `switch` en C#

2 exercices

À propos de Instructions `switch`

Les instructions switch ont une histoire vénérable dans les langages de programmation. Elles ont été introduites en C, où elles étaient appréciées pour leur rapidité. Cette rapidité se payait toutefois par des fonctionnalités très restreintes. En C#, le rôle de l'instruction switch a été étendu au-delà des entiers : elle peut désormais couvrir n'importe quel type arbitraire, valeur ou référence.

Si tu viens d'un langage fonctionnel, travailler avec les instructions switch (et les expressions switch dont on parle ailleurs) est ce qui se rapproche le plus, en C#, de l'utilisation des unions discriminées et du pattern matching. Elles sont cependant loin d'avoir la capacité des unions discriminées à garantir la sûreté du typage.

Les instructions switch simples ressemblent à leurs ancêtres en C et combinent switch, case, break et default.

int direction = GetDirection();
switch (direction)
{
    case 1:
        GoLeft();
        break;
    case 2:
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

Le schéma ci-dessus peut s'utiliser avec n'importe quel type simple (types primitifs et strings).

Quand on y ajoute des types référence, une syntaxe supplémentaire entre en jeu : d'abord pour convertir le type vers le bas, puis pour ajouter des gardes (when), bien que les gardes puissent aussi s'employer avec des cas de valeurs simples. L'exemple ci-dessous l'illustre :

Animal animal = GetAnimal();

switch(animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}
  • La clause default est facultative, mais généralement souhaitable.
  • L'instruction break est obligatoire pour toute clause case non vide.
  • De toute évidence, le type de tous les arguments des étiquettes case doit dériver du type de l'argument du switch. Un argument de switch de type Object autorise évidemment la plus grande variété.
  • L'expression de garde peut inclure tout ce qui se trouve dans la portée, et pas seulement les membres de l'argument du case.
  • Plusieurs case avec des arguments différents peuvent renvoyer au même bloc de code.

La documentation sur les instructions switch fournit une introduction aux instructions switch.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Instructions `switch`

L'entraînement est verrouillé

Déverrouille 6 exercices de plus pour t'entraîner sur Instructions `switch`