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
ifeelse ifper intervalli o condizioni complesse, per esempiotemperatura > 30. - Scegli
switchquando 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
switchche mostri il mese corrispondente ai numeri da 1 a 3. - Aggiungi il controllo di una scelta non valida.
- Riscrivi lo stesso programma con
else ife confronta le due soluzioni.


