Comparaison If vs Switch
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 10 sur 66.
C# fournit deux principaux moyens 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 propres lorsqu'on compare 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;
}Le switch peut regrouper plusieurs cas partageant le même résultat en empilant les étiquettes case ensemble — cela s'appelle le fall-through. Lorsque plusieurs cas n'ont pas de code entre eux, ils exécutent tous le même bloc :
char dayCode = 'S';
switch (dayCode)
{
case 'M':
case 'T':
case 'W':
case 'R':
case 'F':
Console.WriteLine("Weekday");
break;
case 'S':
case 'U':
Console.WriteLine("Weekend");
break;
default:
Console.WriteLine("Unknown day");
break;
}Ici, 'S' et 'U' font tous les deux un fall-through vers le même appel Console.WriteLine("Weekend"). Empiler des étiquettes case vides comme ceci est la manière standard de regrouper des cas en C#.
Défi
MoyenCréez une méthode appelée convertGradeToPoints qui :
- Prend une note alphabétique en tant que paramètre string
- La convertit en 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
Aide-mémoire
C# fournit deux principaux moyens de gérer plusieurs conditions : instructions if-else et instructions switch.
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 propres lors de la comparaison d'une seule variable avec 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;
}Les instructions switch peuvent regrouper plusieurs cases (fall-through) pour partager le même résultat en empilant les étiquettes case :
char dayCode = 'S';
switch (dayCode)
{
case 'M':
case 'T':
case 'W':
case 'F':
Console.WriteLine("Weekday");
break;
case 'S':
case 'U':
Console.WriteLine("Weekend");
break;
default:
Console.WriteLine("Unknown day");
break;
}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