Selezione multipla con switch in C#

Quando bisogna scegliere fra valori precisi di una stessa variabile, l’istruzione switch può rendere la soluzione più leggibile rispetto a una lunga catena di else if. È il costrutto di selezione multipla presentato nel capitolo Selezione.

La struttura switch

int giorno = 2;
switch (giorno)
{
    case 1:
        Console.WriteLine("Lunedì");
        break;
    case 2:
        Console.WriteLine("Martedì");
        break;
    case 3:
        Console.WriteLine("Mercoledì");
        break;
    default:
        Console.WriteLine("Giorno non previsto");
        break;
}

Il valore di giorno è confrontato con ciascun case. In questa versione classica del costrutto, ogni ramo termina con break, che fa uscire dallo switch. Il ramo default gestisce i valori non previsti.

Quando usare if e quando switch

  • Scegli if e else if per intervalli o condizioni complesse, per esempio temperatura > 30.
  • Scegli switch quando confronti un valore con alternative discrete, come 1, 2 e 3.
  • In entrambi i casi, considera cosa deve accadere quando nessuna condizione è soddisfatta.

Esempio: scelta di una figura

Console.Write("Scelta (1=quadrato, 2=rettangolo): ");
int scelta = int.Parse(Console.ReadLine() ?? "0");
switch (scelta)
{
    case 1:
        Console.WriteLine("Hai scelto il quadrato");
        break;
    case 2:
        Console.WriteLine("Hai scelto il rettangolo");
        break;
    default:
        Console.WriteLine("Scelta non valida");
        break;
}

L’uso di int.Parse presuppone un input numerico valido. Per un programma più robusto si può usare int.TryParse, come nella lezione sul pattern menu.

Prova tu

  • Crea uno switch che mostri il mese corrispondente ai numeri da 1 a 3.
  • Aggiungi il controllo di una scelta non valida.
  • Riscrivi lo stesso programma con else if e confronta le due soluzioni.

← Torna al percorso sulla selezione