Menu
CoddyTech

Comparaison If vs Switch

Fait partie de la section Logique & Flux du Journey C# de Coddy. Leçon 10 sur 66.

C# offre deux principales façons de gérer plusieurs conditions : les instructions if-else et les instructions switch. Chacune a 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 claires 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;
}

Switch peut regrouper plusieurs cas (chute) afin qu’ils partagent le même résultat. Empile les étiquettes de cas les unes après les 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 et affichent "Good - 3 points". Ce modèle est utile lorsque tu veux 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 portant des étiquettes différentes mais partageant le même 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;
}
challenge icon

Défi

Moyen

Crée une méthode appelée convertGradeToPoints qui :

  1. Prend une note sous forme de chaîne comme paramètre
  2. La convertit en note numérique à l’aide des approches switch et if-else
  3. La méthode doit implémenter les deux approches et renvoyer le résultat de l’implémentation switch
  4. Utilise les conversions de notes suivantes :
    • "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
        
    }
}
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur C# en ligne