Comparaison If vs Switch
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 10 sur 66.
C# propose deux manières principales de gérer plusieurs conditions : les instructions if-else et les instructions switch. Chacune a ses points forts dans différents scénarios.
Les instructions if-else sont flexibles et peuvent gérer n'importe quel 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 lors de la comparaison d'une seule variable par rapport à 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. Empilez les étiquettes de cas les unes après les autres sans code entre elles, et avec 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" aboutissent tous deux au même bloc et affichent "Good - 3 points". Ce modèle est utile chaque fois que vous souhaitez que des entrées en majuscules et en minuscules — ou n'importe quel ensemble de valeurs — produisent le même résultat.
L'instruction switch peut également regrouper des cas avec différentes étiquettes 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 lettre comme paramètre de type chaîne de caractères (string)
- La convertit en un point de note numérique en utilisant à la fois les approches switch et if-else
- La méthode doit implémenter les deux approches et retourner le résultat de l'implémentation 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 Safety