Menu
Coddy logo textTech

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#.

challenge icon

Défi

Moyen

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

  1. Prend une note alphabétique en tant que paramètre string
  2. La convertit en point de note numérique en utilisant à la fois les approches switch et if-else
  3. La méthode doit implémenter les deux approches et retourner le résultat de l'implémentation switch
  4. 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
        
    }
}
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