Dominando la sentencia switch en C#: Sintaxis, ejemplos y mejores prácticas
Sentencia switch en C#
Descubre cómo reemplazar cadenas complejas if-else con una sentencia switch limpia y legible en C#, con ejemplos prácticos.
Las sentencias switch simplifican la toma de decisiones evaluando una sola expresión y ejecutando el bloque case coincidente. Comparado con una larga escalera if-else, la sintaxis switch es más concisa y fácil de mantener.
La estructura básica es:
switch (variableOrExpression) {
case value1:
// Código para value1
break;
case value2:
// Código para value2
break;
// …
default:
// Código cuando ningún case coincide
}
Cuando la expresión coincide con un case, el bloque correspondiente se ejecuta hasta que un break termina el switch. Si ningún case coincide, se ejecuta el bloque default, similar a una cláusula else.
Sin break, la ejecución "caería" y continuaría en los cases siguientes —a menudo causando errores. Para más sobre sentencia break en C#, consulta la documentación oficial.
Ejemplo 1: Identificando vocales
using System;
namespace Conditional {
class SwitchCase {
public static void Main(string[] args) {
char ch;
Console.WriteLine("Enter an alphabet");
ch = Convert.ToChar(Console.ReadLine());
switch(Char.ToLower(ch)) {
case 'a':
Console.WriteLine("Vowel");
break;
case 'e':
Console.WriteLine("Vowel");
break;
case 'i':
Console.WriteLine("Vowel");
break;
case 'o':
Console.WriteLine("Vowel");
break;
case 'u':
Console.WriteLine("Vowel");
break;
default:
Console.WriteLine("Not a vowel");
break;
}
}
}
}
Salida:
Enter an alphabet X Not a vowel
Aquí, la entrada del usuario se convierte a minúscula y se compara con los cases de vocales. Si ninguna vocal coincide, se muestra el mensaje default.
Como todos los cases de vocales realizan la misma acción, pueden agruparse:
Ejemplo 2: Cases agrupados
using System;
namespace Conditional {
class SwitchCase {
public static void Main(string[] args) {
char ch;
Console.WriteLine("Enter an alphabet");
ch = Convert.ToChar(Console.ReadLine());
switch(Char.ToLower(ch)) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
Console.WriteLine("Vowel");
break;
default:
Console.WriteLine("Not a vowel");
break;
}
}
}
}
La salida es idéntica, pero el código es notablemente más limpio.
Las sentencias switch están limitadas a tipos de datos específicos:
- Tipos primitivos (bool, char, tipos integrales)
- Enumeraciones (enum)
- String
- Versiones nullable de los anteriores
Ejemplo 3: Calculadora simple
using System;
namespace Conditional {
class SwitchCase {
public static void Main(string[] args) {
char op;
double first, second, result;
Console.Write("Enter first number: ");
first = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter second number: ");
second = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter operator (+, -, *, /): ");
op = (char)Console.Read();
switch(op) {
case '+':
result = first + second;
Console.WriteLine("{0} + {1} = {2}", first, second, result);
break;
case '-':
result = first - second;
Console.WriteLine("{0} - {1} = {2}", first, second, result);
break;
case '*':
result = first * second;
Console.WriteLine("{0} * {1} = {2}", first, second, result);
break;
case '/':
result = first / second;
Console.WriteLine("{0} / {1} = {2}", first, second, result);
break;
default:
Console.WriteLine("Invalid Operator");
break;
}
}
}
}
Ejecución de ejemplo:
Enter first number: -13.11 Enter second number: 2.41 Enter operator (+, -, *, /): * -13.11 * 2.41 = -31.5951
Esta calculadora acepta dos operandos y un operador, luego realiza la operación solicitada usando switch. Las entradas se leen con ReadLine() y Read(); para más sobre entrada/salida, vea Entrada y salida básica en C#.
Aunque una cadena if-else podría reemplazar al switch, este ofrece intención más clara y ejecución más rápida para valores discretos.
Lenguaje C
- Circuito con interruptor: guía práctica de circuitos eléctricos básicos
- Experimento con Diodo Conmutador: Supresión de Retroceso Inductivo con Lámpara de Neón
- Interruptores eléctricos: tipos, funciones y aplicaciones
- Eliminación de rebote en contactos de interruptores mecánicos
- Multímetros: De Analógicos a Digitales — Guía Completa
- Sentencia break en C#: Cómo y cuándo usarla
- Dominando la sentencia continue en C#: Cómo saltar iteraciones de bucles eficazmente
- Dominando la Sentencia break en C++
- Dominando switch-case en C++: Sintaxis, uso y ejemplos prácticos
- Dominando la sintaxis básica de C: Tokens, estructura y punto y coma
- Dominando la sentencia pass en Python: Guía práctica