Switch en C#

En C#, switch es una estructura de control de flujo que se utiliza para tomar decisiones basadas en el valor de una expresión. La expresión es evaluada una vez y se compara con una serie de valores constantes (casos) en el cuerpo del switch.

Si la expresión coincide con uno de los casos, el bloque de código correspondiente a ese caso se ejecuta. Si no hay una coincidencia, se puede ejecutar un bloque de código predeterminado (opcional). El switch es una alternativa al uso de varias estructuras if-else anidadas.

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


switch (expresion)
{
    case valor1:
        // Código a ejecutar si expresion == valor1
        break;
    case valor2:
        // Código a ejecutar si expresion == valor2
        break;
    case valor3:
        // Código a ejecutar si expresion == valor3
        break;
    // ...
    default:
        // Código a ejecutar si no hay ninguna coincidencia
        break;
}

Lenguaje del código: C# (cs)

La expresión es evaluada una vez y se compara con cada uno de los casos. Si se encuentra un caso que coincide con la expresión, el código correspondiente a ese caso se ejecuta.

El break es importante porque le dice a C# que salga del switch y continúe con la ejecución del programa. Si no se incluye break, la ejecución continuará en el siguiente caso (lo cual se conoce como «fallthrough» o «caída a través«).

El bloque default es opcional y se ejecuta si no se encuentra ninguna coincidencia entre la expresión y los casos.

Break en Switch

break es una palabra clave en C# que se utiliza para interrumpir la ejecución de una estructura de control de flujo. En el caso de switch, break se utiliza para salir del bloque de código del switch.

Si no se incluye break en cada caso, la ejecución continuará en el siguiente caso (lo cual se conoce como «fallthrough» o «caída a través»). En general, se debe incluir break en cada caso de un switch para evitar resultados inesperados.

Por ejemplo, supongamos que tenemos el siguiente código:


int x = 1;

switch (x)
{
    case 1:
        Console.WriteLine("Uno");
    case 2:
        Console.WriteLine("Dos");
    case 3:
        Console.WriteLine("Tres");
}

Lenguaje del código: C# (cs)

Este código imprimirá lo siguiente:


Uno
Dos
Tres

Lenguaje del código: C# (cs)

Esto sucede porque no hay un break en cada caso, por lo que la ejecución continúa a través de cada caso. Si se agrega break después de cada Console.WriteLine, se imprimirá solo «Uno», que es el caso que coincide con x.

Más ejemplos de switch

Ejemplo 1: Usando switch para seleccionar una opción del menú


Console.WriteLine("Elige una opción:");
Console.WriteLine("1. Imprimir hola");
Console.WriteLine("2. Imprimir adiós");
Console.WriteLine("3. Salir");

int opcion = int.Parse(Console.ReadLine());

switch (opcion)
{
    case 1:
        Console.WriteLine("Hola");
        break;
    case 2:
        Console.WriteLine("Adiós");
        break;
    case 3:
        return; // salir del programa
    default:
        Console.WriteLine("Opción no válida");
        break;
}
Lenguaje del código: C# (cs)

Este código muestra un menú con tres opciones y utiliza switch para ejecutar diferentes acciones según la opción seleccionada.

Si el usuario selecciona 1, se imprimirá «Hola»; si selecciona 2, se imprimirá «Adiós»; si selecciona 3, el programa saldrá; de lo contrario, se imprimirá «Opción no válida».

Ejemplo 2: Usando switch para comparar diferentes tipos de objetos


object obj = "Hola, mundo!";

switch (obj)
{
    case int i:
        Console.WriteLine($"obj es un entero con valor {i}");
        break;
    case string s:
        Console.WriteLine($"obj es una cadena con valor '{s}'");
        break;
    case bool b:
        Console.WriteLine($"obj es un booleano con valor {b}");
        break;
    default:
        Console.WriteLine($"obj es de tipo {obj.GetType().Name}");
        break;
}

Lenguaje del código: C# (cs)

Este código demuestra cómo se puede utilizar switch para comparar diferentes tipos de objetos. En este caso, obj es un objeto que puede ser de diferentes tipos.

Usando switch, podemos determinar qué tipo es obj y realizar diferentes acciones según el tipo. En este ejemplo, obj es una cadena, por lo que se imprimirá «obj es una cadena con valor ‘Hola, mundo!'» en la consola.

Curso de C# Desde Cero

Inscríbete Ahora