L'istruzione switch è sempre stata al centro di discussioni tra gli sviluppatori C#. Alcuni preferiscono questa istruzione mentre altri preferiscono utilizzare l'istruzione if ritenendo switch eccessivamente verbosa e poco chiara.
A partire da C# 8, l'istruzione switch è stata notevolmente semplificata tanto da poter dire che questa è generalmente da preferire alle if. Prendiamo il seguente enum come esempio.
public enum Country { Italy, France, UK }
Supponiamo di voler creare un metodo che restituisce il nome dell'inno in base alla nazione passata in input. Se usassimo le if, il codice sarebbe il seguente.
string GetAnthem(Country country) { if (country == Country.Italy) { return "Fratelli d'Italia"; } else if (country == Country.France) { return "La marsigliese"; } else if (country == Country.UK) { return "God save the queen"; } throw new Exception("Anthem not found") }
Se invece usassimo la sintassi basata sul nuovo switch il codice sarebbe il seguente.
string GetAnthem(Country country) => country switch { Country.Italy => "Fratelli d'Italia", Country.France => "La marsigliese", Country.UK => "God save the queen", _ => throw new Exception("Anthem not found"), }
Come si evince dal codice, le novità rispetto al passato sono molte. Innanzitutto la parola chiave switch viene messa dopo il nome della variabile. Poi l'istruzione case e i ":" sono rimpiazzati da "=>". Il valore di default è dichiarato con il carattere di discard "_". Infine, il body di ogni elemento è un'espressione.
Come si vede, la sintassi del nuovo switch è estremamente chiara e compatta il che comporta un magior utilizzo di questa istruzione rispetto al passato
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.