English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Cuando desee probar una variable contra tres o más condiciones, puede usar la instrucción switch en lugar de la instrucción if else. Aquí, aprenderá sobre la instrucción switch y cómo usarla de manera efectiva en programas C#.
La sintaxis general de la instrucción switch.
Sintaxis:}
switch(expresión/variable) { case constante-value: //Las instrucciones a ejecutar; break; default: //Las instrucciones a ejecutar; break; }
La estructura switch comienza con la palabra clave switch, que contiene una expresión de coincidencia o una variable en paréntesis switch(expresión de coincidencia match expression). El resultado de esta expresión de coincidencia o variable se probará contra las condiciones de caso especificadas dentro de los corchetes {}./El valor de la variable es igual, se ejecuta el caso. La estructura switch también puede contener una etiqueta de caso predeterminado opcional. Si no se ejecuta ningún caso, se ejecuta la etiqueta default. Las palabras clave break, return o goto se utilizan para salir del caso switch.
El siguiente ejemplo muestra una estructura switch simple.
int x = 10; switch (x { case 5: Console.WriteLine("El valor de x es5); break; case 10: Console.WriteLine("El valor de x es10); break; case 15: Console.WriteLine("El valor de x es15); break; default: Console.WriteLine("Valor desconocido"); break; }
el valor de X es10
En el caso superior, la estructura switch (x) contiene una variable x, cuyo valor se comparará con cada caso el valor del valor coincide. La estructura switch superior contiene valores constantes5、10y15las tres situaciones. También contiene la etiqueta default, si ningún valor de caso coincide con el switch Variable/La expresión coincide, se ejecutará la etiqueta. Cada caso comienza después de : y contiene una instrucción a ejecutar. El valor de X coincide con el valor del segundo caso10: Coincidencia, por lo tanto, el valor de salida es10
La estructura switch puede contener cualquier expresión no nula que devuelva un tipo de valor char, string, bool, int o enum.
La estructura switch también puede contener una expresión, cuyo resultado se probará para cada caso en tiempo de ejecución.
int x = 125; switch (x % 2) { case 0: Console.WriteLine($"{x} es par"); break; case 1: Console.WriteLine($"{x} es impar"); break; }
125es impar
Los casos switch deben ser valores constantes únicos. Puede ser bool, char, string, integer, enum o tipos correspondientes que puedan ser null.
En C# 7Después de .0, el caso switch puede contener valores no únicos. En este caso, se ejecutará el primer caso que coincida.
Considera el siguiente ejemplo simple de estructura switch.
string statementType = "switch"; switch (statementType) { case "if.else": Console.WriteLine("sentencia if...else"); break; case "ternary": Console.WriteLine("Operador ternario"); break; case "switch": Console.WriteLine("sentencia switch"); break; }
sentencia switch
Se pueden combinar varios casos para ejecutar la misma instrucción.
int x = 5; switch (x { case 1: Console.WriteLine("x = 1); break; case 2: Console.WriteLine("x = 2); break; case 4: case 5: Console.WriteLine("x = 4 o x = 5); break; default: Console.WriteLine("x > 5); break; }
Cada caso debe salir explícitamente usando break, return, goto u otra manera, para asegurar que el control de flujo salga de un caso y no entre en el caso por defecto.
A continuación, se utiliza la palabra clave return.
static void Main(string[] args) { int x = 125; Console.Write(isOdd(x) ? "Valor par" : "Valor impar"); } static bool isOdd(int i, int j) { switch (x % 2) { case 0: return true; case 1: return false; default: return false; } return false; }
Valor impar
La omisión de break, return o goto, o la existencia de casos switch con valores constantes iguales, causará errores en tiempo de compilación.
int x = 1; switch (x { case 0: Console.WriteLine($"{x} es un valor par"); break; case 1: Console.WriteLine($"{x} es un valor impar"); break; case 1: // Error-Los controles no pueden salir de una etiqueta case ("case 1:)ingresar a otro etiqueta case Console.WriteLine($"{x} es un valor impar"); defaut: Console.WriteLine($"{x} es un valor impar"); break; }
Un switch puede estar dentro de otro switch.
int j = 5; switch (j { case 5: Console.WriteLine(5); switch (j - 1) { case 4: Console.WriteLine(4); switch (j - 2) { case 3: Console.WriteLine(3); break; } break; } break; case 10: Console.WriteLine(10); break; case 15: Console.WriteLine(15); break; default: Console.WriteLine(100); break; }
5 4 3
La sentencia switch es un método alternativo para la sentencia if else.
La sentencia switch prueba la coincidencia de la expresión de coincidencia con un grupo de constantes especificadas para case/Variable.
El caso switch debe contener las palabras clave break, return o goto para poder salir del caso.
El caso switch puede contener una etiqueta default opcional, que se ejecutará cuando no se ejecute ningún caso.
El compilador de C# proporcionará errores sobre la falta de : y valores constantes, y saldrá del caso.
Desde C#7A partir de .0, el caso switch puede contener valores no únicos. En este caso, se ejecutará el primer caso que coincida.