C# 8.0 – Specification – Pattern Matching – Switch Expressions
Índice general – C# 8.0 – Specification
Otra de las novedades introducidas en C# 8.0 es lo que tiene relación con Pattern Matching.
Pattern Matching, tiene relación directa en cuanto a evaluar una declaración a través de patrones y en concreto con declaraciones switch.
Dentro de los diferentes Pattern Matching tenemos una que recibe el nombre de Switch Expressions.
Switch Expressions es una extensión de la declaración switch por el cual se pueden utilizar switch semánticos dentro del contexto de una expresión.
Como es posible que con esta explicación no quede claro del todo, la mejor forma de ver en qué consiste es como siempre, verlo con un ejemplo práctico.
La forma tradicional de la declaración switch viene a ser de la forma:
public static void Main() { int caseSwitch = 1; switch (caseSwitch) { case 1: Console.WriteLine("Value 1"); break; default: Console.WriteLine("Unknown value"); break; } }
Como recordatorio rápido, podemos ver que la declaración switch está englobada dentro de una evaluación de valores a través de case, y dentro de ella un indicador break para indicar el fin de tratamiento de evaluación.
También vemos el uso por defecto de default.
Y como siempre, con la posibilidad de indicar un tratamiento para los casos que se cumplen dentro de la evaluación.
Ahora bien, en Switch Expressions el objetivo es utilizar switch para semánticamente evaluar y devolver el resultado de forma directa.
Un ejemplo de código sería el siguiente:
private static string GetSwitchExpressions(string name) => name switch { "Peter" => "Is Peter", "Mary" => "Is Mary", _ => "Unknown" };
En este código, podemos apreciar que switch tiene algunos ajustes con la forma de evaluación, pudiendo obtener un resultado directo mediante expresiones como en el ejemplo.
No obstante, el ejemplo tradicional de swith que veíamos anteriormente, quedaría de la «nueva forma» de esta manera:
private static string GetSwitchExpressions() { int caseSwitch = 1; return caseSwitch switch { 1 => "Value 1", _ => "Unknown Value" }; }
Advierte igualmente el uso del carácter de subrayado _
Es la forma que tenemos en Switch Expressions de indicar un valor default en la declaración swith tradicional.
Como podemos ver, esta forma de trabajar con switch puede ayudarnos enormemente a simplificar el código y hacerlo un poco más legible cuando lo que queremos hacer es evaluar rápidamente una expresión, pudiendo extender su uso llamando a funciones locales estáticas o métodos externos por ejemplo.
Happy Coding!