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.
Si quieres aprender más sobre el condicional SWITCH
consulta el Curso de Introducción a la Programación leer más
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
Determinar el nombre de un número
En este ejemplo, utilizamos la estructura switch
para determinar el nombre de un número según su valor.
int numero = 2;
// Utilizamos switch para determinar el nombre del número según su valor
switch (numero)
{
case 1:
Console.WriteLine("Uno");
case 2:
Console.WriteLine("Dos");
break;
case 3:
Console.WriteLine("Tres");
break;
default:
Console.WriteLine("Número no válido");
break;
}
Determinar la operación matemática según el operador
Este código muestra cómo utilizar un switch
para determinar la operación matemática según el operador proporcionado.
char operador = '+';
// Utilizamos switch para determinar la operación matemática según el operador
switch (operador)
{
case '+':
Console.WriteLine("Suma");
break;
case '-':
Console.WriteLine("Resta");
break;
case '*':
Console.WriteLine("Multiplicación");
break;
case '/':
Console.WriteLine("División");
break;
default:
Console.WriteLine("Operador no válido");
break;
}
Determinar el nombre de un día de la semana
Este ejemplo muestra cómo determinar el nombre de un día de la semana utilizando una estructura switch.
int dia = 3;
// Utilizamos switch para determinar el nombre del día según su valor
switch (dia)
{
case 1:
Console.WriteLine("Lunes");
break;
case 2:
Console.WriteLine("Martes");
break;
case 3:
Console.WriteLine("Miércoles");
break;
// Agregamos casos para los días restantes...
default:
Console.WriteLine("Día no válido");
break;
}
Determinar el nombre de un mes (con enumeración)
Aquí se utiliza un switch para determinar el nombre de un mes según su valor en una enumeración.
// Definimos una enumeración para los meses del año
enum Meses { Enero = 1, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre }
// Declaramos una variable de la enumeración para representar el mes
Meses mes = Meses.Mayo;
// Utilizamos switch para determinar el nombre del mes según su valor en la enumeración
switch (mes)
{
case Meses.Enero:
Console.WriteLine("Enero");
break;
case Meses.Febrero:
Console.WriteLine("Febrero");
break;
// Agregamos casos para los meses restantes...
default:
Console.WriteLine("Mes no válido");
break;
}
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