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.