Comparaison If vs Switch
Fait partie de la section Logique & Flux du Journey C# de Coddy. Leçon 10 sur 66.
C# propose deux façons principales de gérer plusieurs conditions : les instructions if-else et les instructions switch. Chacune possède ses points forts selon les situations.
Les instructions if-else sont flexibles et peuvent gérer tout type de condition :
string grade = "B";
if (grade == "A")
{
Console.WriteLine("Excellent");
}
else if (grade == "B")
{
Console.WriteLine("Good");
}
else if (grade == "C")
{
Console.WriteLine("Satisfactory");
}
else
{
Console.WriteLine("Needs improvement");
}Les instructions switch sont plus lisibles lorsqu’elles comparent une seule variable à plusieurs valeurs constantes :
string grade = "B";
switch (grade)
{
case "A":
Console.WriteLine("Excellent");
break;
case "B":
Console.WriteLine("Good");
break;
case "C":
Console.WriteLine("Satisfactory");
break;
default:
Console.WriteLine("Needs improvement");
break;
}switch peut regrouper plusieurs cas (fall-through) afin qu’ils partagent le même résultat. Empile les étiquettes case les unes à la suite des autres, sans code entre elles, et place un seul break à la fin :
string grade = "B";
switch (grade)
{
case "A":
case "a":
Console.WriteLine("Excellent - 4 points");
break;
case "B":
case "b":
Console.WriteLine("Good - 3 points");
break;
case "C":
case "c":
Console.WriteLine("Satisfactory - 2 points");
break;
default:
Console.WriteLine("Needs improvement");
break;
}Ici, "B" et "b" passent tous deux au même bloc, qui affiche "Good - 3 points". Ce modèle est utile lorsque vous souhaitez que les entrées en majuscules et en minuscules, ou tout ensemble de valeurs, produisent le même résultat.
Switch peut également regrouper des cas avec des étiquettes différentes qui partagent un résultat :
char dayCode = 'M';
switch (dayCode)
{
case 'M':
Console.WriteLine("Monday");
break;
case 'T':
Console.WriteLine("Tuesday or Thursday");
break;
case 'W':
Console.WriteLine("Wednesday");
break;
case 'F':
Console.WriteLine("Friday");
break;
default:
Console.WriteLine("Unknown day");
break;
}Défi
MoyenCréez une méthode appelée convertGradeToPoints qui :
- Prend une note sous forme de chaîne comme paramètre
- La convertit en note numérique en utilisant à la fois les approches
switchetif-else - La méthode doit implémenter les deux approches et retourner le résultat de l’implémentation avec
switch - Utilisez ces conversions de notes :
- "A" ou "a" = 4
- "B" ou "b" = 3
- "C" ou "c" = 2
- "D" ou "d" = 1
- "F" ou "f" = 0
- Toute autre entrée = -1
Essayez vous-même
public class ConvertGradeToPoints
{
// Implémentez la méthode convertGradeToPoints
public static int convertGradeToPoints(string letterGrade)
{
// Écrivez votre code ici
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null SafetyEntraînez-vous par vous-même : Compilateur C# en ligne