La condition SWITCH
"Quand tu as beaucoup de cas possibles, mieux vaut un
switchqu'une avalanche deif."
Pourquoi utiliser switch ?
L’instruction switch est utilisée lorsque vous devez tester une même variable contre plusieurs valeurs possibles.
Elle est plus lisible et plus claire qu’une suite de if / else if.
Syntaxe de base d’un switch
Voici une explication claire de chaque élément constituant un switch :
switch (expression)
{
case valeur1:
// instructions à exécuter si expression == valeur1
break;
case valeur2:
// instructions à exécuter si expression == valeur2
break;
default:
// instructions à exécuter si aucune valeur ne correspond
break;
}
🔹 expression
C’est la variable ou la valeur que vous voulez tester. Elle est évaluée une seule fois.
🔹 case valeurX:
Chaque case représente une valeur possible que peut prendre expression.
Si expression == valeurX, alors le bloc associé s’exécute.
🔹 break;
Il interrompt le switch immédiatement après l'exécution d’un case.
Sans break, l’exécution continue vers les case suivants (fall-through), ce qui peut provoquer des erreurs.
🔹 default:
Ce bloc est optionnel, mais recommandé.
Il s’exécute si aucune des valeurs des case ne correspond à expression.
Pensez-y comme un else pour un if.
Exemple commenté :
int note = 12;
switch (note)
{
case 20:
Console.WriteLine("Excellent");
break; // on sort du switch ici
case 12:
Console.WriteLine("Moyen");
break;
case 0:
Console.WriteLine("Nul");
break;
default:
Console.WriteLine("Note inconnue");
break;
}
➡️ Ici, note vaut 12, donc seul le bloc case 12: s’exécute.
switch (variable)
{
case valeur1:
// instructions
break;
case valeur2:
// instructions
break;
default:
// instructions si aucune valeur ne correspond
break;
}
Exemple simple
int jour = 3;
switch (jour)
{
case 1:
Console.WriteLine("Lundi");
break;
case 2:
Console.WriteLine("Mardi");
break;
case 3:
Console.WriteLine("Mercredi");
break;
default:
Console.WriteLine("Jour inconnu");
break;
}
➡️ Le programme affiche : Mercredi
⚠️ Erreurs fréquentes
-
❌ Oublier les
break
➜ Peut entraîner l’exécution de plusieurs cases à la suite (comportement dit de fall-through). -
❌ Utiliser des types non supportés (comme
float)
➜switchne fonctionne qu’avec des types discrets (int,char,string,enum...). -
❌ Ne pas inclure de
default
➜ Bien que facultatif, c’est une bonne pratique d’avoir un cas par défaut pour gérer les valeurs inattendues. -
❌ Utiliser des expressions complexes dans les
case
➜ Lescasedoivent tester des constantes, pas des calculs ni des expressions.
Avantages de switch
- Plus lisible que de nombreux
if / else if - Plus performant dans certains cas
- Permet une structure propre et centralisée pour des cas simples
Astuces et précisions utiles
🔸 Enchaîner plusieurs case (cas équivalents)
Il est possible d’associer plusieurs case à une même action sans répéter le bloc de code :
int jour = 6;
switch (jour)
{
case 6:
case 7:
Console.WriteLine("C’est le week-end !");
break;
default:
Console.WriteLine("Jour de semaine.");
break;
}
➡️ Si jour vaut 6 ou 7, le même bloc s’exécutera.
🔸 ❌ Pas de conditions complexes dans les case
Les case ne peuvent pas contenir d’expressions ou de comparaisons, uniquement des valeurs constantes.
// ❌ Erreur !
case (age > 18):
Console.WriteLine("Adulte");
break;
✅ À la place, utilisez if si vous avez besoin de comparer ou tester une condition logique.
🔸 Types acceptés dans switch
En C#, le switch fonctionne uniquement avec :
- int, char, string
- enum
- depuis C# 7+ : switch avec pattern matching (non couvert ici)
Ne fonctionne pas avec :
- float, double
- des objets complexes sans surcharge d'égalité
🔸 Bonnes pratiques
- ✅ Toujours ajouter un
defaultpour capturer les cas inattendus - ✅ Bien commenter si plusieurs
cases'enchaînent - ✅ Vérifier que chaque
casese termine correctement (break,return, etc.)
🔸 Utiliser return dans un switch
Dans certains cas, notamment dans une méthode ou une fonction, on peut utiliser return au lieu de break pour terminer immédiatement l’exécution du switch (et de la méthode).
Exemple :
string ObtenirJour(int jour)
{
switch (jour)
{
case 1:
return "Lundi";
case 2:
return "Mardi";
case 3:
return "Mercredi";
default:
return "Inconnu";
}
}
➡️ Ici, chaque case renvoie une valeur directement.
Il n’est pas nécessaire d’utiliser break puisqu’un return met fin à l'exécution de la méthode.
Astuce : Si tu utilises return, n’ajoute pas break ensuite — il serait inutile.
La différence avec if…else if…else est qu’avec switch, la condition d’aiguillage doit porter sur la comparaison d’une variable entière avec des valeurs constantes, et non sur une condition quelconque
(l’aiguillage en fonction de conditions comme delta>0, delta<0 ou mesure==0.0, doit être réalisés avec if…else if)
Quiz
Testez vos connaissances ! 📝 Clique sur chaque question pour découvrir la réponse.
1️⃣ Quand est-il conseillé d’utiliser un
switch ?
B. Quand il n’y a qu’un seul cas
C. Pour tester une variable contre plusieurs valeurs fixes
D. Pour effectuer des boucles
E. Pour remplacer tous les
if
✅ Afficher la réponse
switch est utile quand une même variable doit être comparée à plusieurs valeurs fixes.
2️⃣ Que fait ce code ?
int choix = 2;
switch (choix)
{
case 1:
Console.WriteLine("Un");
break;
case 2:
Console.WriteLine("Deux");
case 3:
Console.WriteLine("Trois");
break;
}
B. Affiche "Deux Trois"
C. Affiche "Trois"
D. Ne compile pas
E. Rien du tout
✅ Afficher la réponse
break après le case 2, l’exécution continue sur le case 3.
3️⃣ Que signifie le mot-clé
default dans un switch ?
B. Il remplace le
breakC. Il gère les cas où aucune valeur ne correspond
D. Il désactive les autres cas
E. Il est obligatoire
✅ Afficher la réponse
default est exécuté quand aucun case ne correspond.
4️⃣ Pourquoi les
break sont-ils importants ?
B. Pour éviter que les
case suivants soient exécutésC. Pour accélérer le code
D. Pour ignorer la condition
E. Ils ne sont pas obligatoires
✅ Afficher la réponse
break, l’exécution continue dans les case suivants.
5️⃣ Quel type n’est pas utilisable dans un
switch en C# ?
intB.
stringC.
enumD.
floatE.
char
✅ Afficher la réponse
float n’est pas supporté dans les case d’un switch C#.
Navigation
Introduction If Switch Travail pratique
Pour aller plus loin
- Microsoft Docs – switch statement
Documentation complète surswitch, avec variantes modernes (pattern matching) et exemples détaillés.
-
Programiz – C# switch statement
Introduction claire au fonctionnement deswitch, avec cas concrets et bonnes pratiques. -
W3Schools – C# switch
Présentation simple et interactive duswitch, avec des exemples testables.
