Menu
Coddy logo textTech

Confronto tra if e switch

Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 10 di 66.

C# offre due modi principali per gestire più condizioni: le istruzioni if-else e le istruzioni switch. Ognuna ha i suoi punti di forza in scenari diversi.

Le istruzioni if-else sono flessibili e possono gestire qualsiasi tipo di condizione:

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");
}

Le istruzioni switch sono più ordinate quando si confronta una singola variabile con più valori costanti:

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 può raggruppare più casi insieme (fall-through), in modo che condividano lo stesso risultato. Disponi le etichette dei casi una dopo l’altra senza codice tra di loro e inserisci un solo break alla fine:

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;
}

Qui, sia "B" sia "b" confluiscono nello stesso blocco e stampano "Good - 3 points". Questo schema è utile ogni volta che vuoi che gli input in maiuscolo e in minuscolo, o qualsiasi insieme di valori, producano lo stesso risultato.

Switch può anche raggruppare casi con etichette diverse che condividono lo stesso risultato:

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

Sfida

Medio

Crea un metodo chiamato convertGradeToPoints che:

  1. Accetta un voto in lettere come parametro di tipo stringa
  2. Lo converte in un punteggio numerico usando sia l'approccio switch sia quello if-else
  3. Il metodo deve implementare entrambi gli approcci e restituire il risultato dell'implementazione switch
  4. Usa queste conversioni dei voti:
    • "A" o "a" = 4
    • "B" o "b" = 3
    • "C" o "c" = 2
    • "D" o "d" = 1
    • "F" o "f" = 0
    • Qualsiasi altro input = -1

Provalo tu

public class ConvertGradeToPoints
{
    // Implementa il metodo convertGradeToPoints
    public static int convertGradeToPoints(string letterGrade)
    {
        // Scrivi il tuo codice qui
        
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C# online