Pattern Matching en C#
Pattern Matching en C# permite comprobar tipos, estructuras y condiciones de objetos de forma más expresiva y concisa. Introducido en C# 7 y ampliado en versiones posteriores, simplifica el código de validación y casting evitando errores y haciendo el flujo más claro.
Pattern Matching con is
Puedes comprobar el tipo y hacer un cast seguro en una sola instrucción.
object obj = "Hola Mundo";
if (obj is string texto) {
Console.WriteLine($"Longitud: {texto.Length}");
}
Aquí texto solo existe si obj es string.
Switch Expressions
Puedes usar patrones en expresiones switch de forma concisa.
string resultado = obj switch {
string s => $"Es texto: {s}",
int n => $"Es entero: {n}",
_ => "Tipo desconocido"
};
Console.WriteLine(resultado);
Permite asignar valores directamente desde el patrón.
Relational y Logical Patterns
Puedes combinar patrones lógicos para condiciones más avanzadas.
int edad = 25;
string categoria = edad switch {
< 13 => "Niño",
>= 13 and < 18 => "Adolescente",
>= 18 => "Adulto",
_ => "Desconocido"
};
Console.WriteLine(categoria);
Facilita la clasificación sin if-else anidados.
Buenas Prácticas
Usa Pattern Matching para reducir el casting manual y el uso excesivo de if-else. Mantén los patrones simples y legibles. Documenta casos complejos para claridad. Combina patrones relacionales y lógicos para reglas claras. Prefiere switch expressions para transformaciones limpias.