csharp-condicional-switch

Qué es y cómo usar el condicional SWITCH en C#

El condicional switch es una estructura de control en C# que proporciona una forma de ejecutar diferentes bloques de código según el valor de una expresión.

El condicional switch permite evaluar el valor de una expresión y ejecutar bloques de código específicos basados en diferentes valores posibles de esa expresión.

A veces se utiliza como una alternativa más limpia y legible a una serie de instrucciones if-else anidadas. Aunque, mucha gente opina (yo incluido) que en lugar de mejorar la legibilidad, normalmente la empeora

Sintaxis básica

La sintaxis básica de un condicional switch en C# es la siguiente:

switch (expresion)
{
    case valor1:
        // Código a ejecutar si expresion es igual a valor1
        break;
    case valor2:
        // Código a ejecutar si expresion es igual a valor2
        break;
    ...
    default:
        // Código a ejecutar si expresion no coincide con ningun caso
        break;
}
  • expresión: Es la expresión cuyo valor se evalúa en cada caso
  • case: Representa un valor específico que se compara con la expresión
  • default: Opcionalmente, se puede incluir un bloque default

El bloque default se ejecutará si ninguno de los casos anteriores coincide con el valor de la expresión (es opcional, pero lo más normal es que lo tengamos).

Vamos a verlo con un ejemplo sencillo simple donde se utiliza un condicional switch para imprimir un número en pantalla.

int numero = 2;

switch (numero)
{
    case 1:
        Console.WriteLine("Uno");
        break;
    case 2:
        Console.WriteLine("Dos");
        break;
    case 3:
        Console.WriteLine("Tres");
        break;
    default:
        Console.WriteLine("Número no válido");
        break;
}

En este caso, en función de lo que valga numero

  • 1, 2 y 3 imprimirán el número correspondiente en pantalla.
  • Cualquier otro número mostrará “Número no válido”.

Fall-Through entre casos

El Fall-Through es la posibilidad de “caer” de un caso a otro, y ejecutar varias sentencias de código. A diferencia de otros lenguajes (como C++), el “fall-through” en C# está intencionadamente limitado.

En C# todos los bloques deben

  • O estar vacíos
  • O tener una sentencia break

Es decir, no es posible hacer esto, omitiendo el break en un caso,

case 1:
	Console.WriteLine("Uno");
	// no puedo no poner `break`
case 2:
	Console.Writeline("Dos");
// mas casos

Sí sería posible si los case están totalmente vacíos. Así

switch (numero)
{
    case 1:
    case 2:
    case 3:      
        Console.WriteLine("Menor que 3");
        break;
    default:
        Console.WriteLine("Mayor que 3");
        break;
}

Aunque, muy probablemente, sea una mala idea hacerlo 😉.

Ejemplos prácticos

Estos ejemplos tienen el propósito de mostrar cómo utilizar el condicional Switch. No significa que sea la mejor forma de resolver el problema que abordan. Lo normal es que haya alternativas mejores