Condicionales: if/else y switch
Las estructuras condicionales en C# son casi idénticas a otros lenguajes de la familia C: if/else para ramificaciones, switch/case para múltiples valores posibles. El switch clásico de C# requería break en cada case (igual que en Java/C++) para evitar "fall-through", donde el código continúa al siguiente case sin detenerse.
Las switch expressions (C# 8+) eliminan este problema: usan -> que nunca tiene fall-through, son más concisas y pueden devolver un valor directamente.
El pattern matching en C# (con is y switch expressions) es una de las características más modernas. Permite verificar no solo el valor sino el tipo de una variable: if (objeto is string s && s.Length > 0) verifica que es string Y lo asigna a s en un solo paso.
Las switch expressions con property patterns { Propiedad: valor } son especialmente poderosas para manejar objetos complejos de forma declarativa, como un árbol de decisiones limpio.
// if / else if / else
int nota = 85;
if (nota >= 90) {
Console.WriteLine("Excelente");
} else if (nota >= 70) {
Console.WriteLine("Bien");
} else if (nota >= 60) {
Console.WriteLine("Suficiente");
} else {
Console.WriteLine("Reprobado");
}
// Operador ternario
string estado = nota >= 60 ? "Aprobado" : "Reprobado";
// switch tradicional
switch (nota / 10) {
case 10:
case 9:
Console.WriteLine("A"); break;
case 8:
Console.WriteLine("B"); break;
default:
Console.WriteLine("C"); break;
}
// switch expression (C# 8+) - más elegante
string clasificar(int n) => n switch {
>= 90 => "Excelente",
>= 70 => "Bien",
>= 60 => "Suficiente",
_ => "Reprobado"
};
// Pattern matching en if
object valor = 42;
if (valor is int numero && numero > 10) {
Console.WriteLine($"Entero mayor a 10: {numero}");
}
// switch con patrones de tipo
void procesar(object obj) {
switch (obj) {
case int n when n > 0: Console.WriteLine($"Positivo: {n}"); break;
case string s: Console.WriteLine($"Texto: {s}"); break;
case null: Console.WriteLine("Es null"); break;
}
}
Practica esta lección
Resuelve los ejercicios del curso de C# en la app, gratis y con corrección automática.
Empezar a practicar