C# 8.0 – Specification – Pattern Matching – Tuple Patterns
Índice general – C# 8.0 – Specification
Perteneciente a Pattern Matching, encontramos también una funcionalidad con respecto a las tuplas denominada Tuple Patterns.
La idea detrás de Tuple Patterns es la de comparar o evaluar no un valor, sino varios valores al mismo tiempo que nos permita obtener un resultado.
Para ver cómo funciona esto, vamos a ver un sencillo ejemplo de un convertidor de temperaturas.
El convertidor permitirá enviar el valor de una temperatura e indicar si queremos pasar de Celsius a Fahrenheit o viceversa, y veremos que el código es mínimo.
Partiremos de una lista enumerada:
private enum Temperature { Celsius, Fahrenheit }
La llamada general a nuestra función será de la forma (por ejemplo y para convertir de Celsius a Fahrenheit):
PatternMatchingTuplePatterns(Temperature.Celsius, Temperature.Fahrenheit, 12)
Y nuestra función encargada de evaluar la conversión, quedará de la forma:
private static double PatternMatchingTuplePatterns(Temperature temperatureOrigin, Temperature temperatureDestiny, double temperature) => (temperatureOrigin, temperatureDestiny) switch { (Temperature.Celsius, Temperature.Fahrenheit) => (temperature * 9) / 5 + 32, (Temperature.Fahrenheit, Temperature.Celsius) => (temperature - 32) * 5 / 9, _ => temperature };
Cualquier otra conversión como de Celsius a Celsius, o bien de Fahrenheit a Fahrenheit, devolverá el mismo valor de temperatura original.
Como podemos ver, el uso de este patrón puede sernos de mucha utilidad y simplificar y reducir el código enormemente, haciéndolo a la vez bastante legible.
Happy Coding!