Está en la página 1de 4

switch (Referencia de C#) https://msdn.microsoft.com/es-es/library/06tc147t(d=printer).

aspx

Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa
el puntero del mouse por el texto.

switch (Referencia de C#)


Visual Studio 2015

 
La instrucción switch es una instrucción de control que selecciona una sección switch para ejecutarla desde una lista de
candidatos.

Una instrucción switch incluye una o más secciones switch.  Cada sección switch contiene una o más etiquetas case
seguidas de una o más instrucciones.  En el ejemplo siguiente se muestra una instrucción switch simple con tres
secciones switch.  Cada sección switch tiene una etiqueta case, por ejemplo, case 1, y dos instrucciones.  

C#

int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
Console.WriteLine("Case 1");
break;
case 2:
Console.WriteLine("Case 2");
break;
default:
Console.WriteLine("Default case");
break;
}

Comentarios
Cada etiqueta case especifica un valor constante.  La instrucción switch transfiere el control a la sección switch cuya
etiqueta case coincide con el valor de la expresión switch (caseSwitch en el ejemplo).  Si ninguna etiqueta case
contiene un valor coincidente, el control se transfiere a la sección default, si hay alguna.  Si no hay ninguna sección
default, no se realiza ninguna acción y el control se transfiere fuera de la instrucción switch.  En el ejemplo anterior,
las instrucciones en la primera sección switch se ejecutan porque case 1 coincide con el valor de caseSwitch.  

Una instrucción switch puede incluir cualquier número de secciones switch y cada sección puede tener una o más
etiquetas case (como se muestra en el ejemplo siguiente de etiquetas case de una cadena).  Sin embargo, las etiquetas
case pueden contener el mismo valor constante.  

La ejecución de la lista de instrucciones en la sección switch seleccionada comienza con la primera instrucción y
continúa a lo largo de la lista de instrucciones, normalmente hasta que se alcance una instrucción de salto, como
break, goto case, return o throw.  En este punto, el control se transfiere fuera de la instrucción switch o a otra
etiqueta case.  

A diferencia de C++, C# no permite que la ejecución continúe de una sección switch a la siguiente.  El código
siguiente genera un error.  

1 de 4 26/05/2016 22:36
switch (Referencia de C#) https://msdn.microsoft.com/es-es/library/06tc147t(d=printer).aspx

C#

switch (caseSwitch)
{
// The following switch section causes an error.
case 1:
Console.WriteLine("Case 1...");
// Add a break or other jump statement here.
case 2:
Console.WriteLine("... and/or Case 2");
break;
}

C# requiere que el final de las secciones switch, incluida la última, sea inalcanzable. Es decir, a diferencia de otros
lenguajes, el código puede no pasar explícitamente a la siguiente sección switch. Aunque este requisito se cumple
normalmente mediante el uso de una instrucción break, la siguiente etiqueta case también es válida, porque asegura
que no se pueda llegar al final de la lista de instrucciones.

C#

case 4:
while (true)
Console.WriteLine("Endless looping. . . .");

Ejemplo
En el ejemplo siguiente se muestran los requisitos y las capacidades de una instrucción switch.

C#

class Program
{
static void Main(string[] args)
{
int switchExpression = 3;
switch (switchExpression)
{
// A switch section can have more than one case label.
case 0:
case 1:
Console.WriteLine("Case 0 or 1");
// Most switch sections contain a jump statement, such as
// a break, goto, or return. The end of the statement list
// must be unreachable.
break;
case 2:
Console.WriteLine("Case 2");
break;
// The following line causes a warning.
Console.WriteLine("Unreachable code");
// 7 - 4 in the following line evaluates to 3.
case 7 - 4:
Console.WriteLine("Case 3");
break;

2 de 4 26/05/2016 22:36
switch (Referencia de C#) https://msdn.microsoft.com/es-es/library/06tc147t(d=printer).aspx

// If the value of switchExpression is not 0, 1, 2, or 3, the


// default case is executed.
default:
Console.WriteLine("Default case (optional)");
// You cannot "fall through" any switch section, including
// the last one.
break;
}
}
}

Ejemplo
En el último ejemplo, la variable de cadena, str, y las etiquetas case de la cadena controlan el flujo de ejecución.

C#

class SwitchTest
{
static void Main()
{
Console.WriteLine("Coffee sizes: 1=small 2=medium 3=large");
Console.Write("Please enter your selection: ");
string str = Console.ReadLine();
int cost = 0;

// Notice the goto statements in cases 2 and 3. The base cost of 25


// cents is added to the additional cost for the medium and large sizes.
switch (str)
{
case "1":
case "small":
cost += 25;
break;
case "2":
case "medium":
cost += 25;
goto case "1";
case "3":
case "large":
cost += 50;
goto case "1";
default:
Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
break;
}
if (cost != 0)
{
Console.WriteLine("Please insert {0} cents.", cost);
}
Console.WriteLine("Thank you for your business.");
}
}
/*
Sample Input: 2

Sample Output:

3 de 4 26/05/2016 22:36
switch (Referencia de C#) https://msdn.microsoft.com/es-es/library/06tc147t(d=printer).aspx

Coffee sizes: 1=small 2=medium 3=large


Please enter your selection: 2
Please insert 50 cents.
Thank you for your business.
*/

Especificación del lenguaje C#


Para obtener más información, vea Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva
de la sintaxis y el uso de C#.

Vea también
Referencia de C#
Guía de programación de C#
Palabras clave de C#
switch (Instrucción) (C++)
if-else (Referencia de C#)

© 2016 Microsoft

4 de 4 26/05/2016 22:36

También podría gustarte