Espressioni switch in C# 8

Le espressioni switch sono state introdotte da C# 8 per sfruttare le caratteristiche dell’istruzione omonima, in un contesto in cui serve un’espressione, e con una sintassi più concisa.

Le espressioni switch sono dunque utilizzabili ovunque sia utilizzabile un’espressione. Per esempio in un’assegnazione:

var greeting = language switch {
    "eng" => "Hello",
    "spa" => "Hola",
    "ita" => "Ciao",
};

In questo caso l’espressione valuta semplicemente il valore della variabile language e alla variabile greeting assegna la stringa “Ciao”.

Naturalmente l’espressione switch utilizza le funzionalità di pattern matching, per esempio per verificare il tipo della variabile. Il seguente metodo utilizza l’espressione switch per calcolare e restituire il valore dell’area di una figura geometrica, calcolandolo in base al tipo di oggetto (supponendo che esistano le classi Quadrato e Cerchio), quindi utilizzando il pattern type:

static double CalcArea(object obj)
{
	return obj switch
            {
                Quadrato q => q.Lato * q.Lato,
                Cerchio c => c.Raggio * c.Raggio * Math.PI,
                _ => 0
            };
}

L’ultima casistica usa il cosiddetto pattern discard _ per gestire tutte le casistiche che non rientrano nei casi di tipo Quadrato e Cerchio.

Si noti anche come l’espressione sia utilizzata in questo caso subito dopo un return per far restituire il valore al metodo.

In attesa di Programmare con C# 8 Guida Completa

questo e altro nella prossima edizione del libro, in uscita fra pochi mesi.

Lascia un commento