switch (Referencia de C#)

Actualización: noviembre 2007

La instrucción switch es una instrucción de control que controla múltiples selecciones y enumeraciones pasando el control a una de las instrucciones case de su cuerpo, como se muestra en el ejemplo siguiente:

Ejemplo

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;
}

El control se transfiere a la instrucción case que coincide con el valor del modificador. La instrucción switch puede incluir cualquier número de instancias case, sin embargo dos instrucciones case nunca pueden tener el mismo valor. La ejecución del cuerpo de la instrucción empieza en la instrucción seleccionada y continúa hasta que la instrucción break transfiere el control fuera del cuerpo case. Es necesario introducir una instrucción de salto como break después de cada bloque case, incluido el último bloque, se trate de una instrucción case o de una instrucción default. Con una excepción, (a diferencia de la instrucción switch de C++), C# no admite el paso implícito de una etiqueta case a otra. Esta excepción se produce si una instrucción case no tiene ningún código.

Si ninguna expresión case coincide con el valor de la instrucción switch, entonces el control se transfiere a las instrucciones que siguen la etiqueta default opcional. Si no existe ninguna etiqueta default, el control se transfiere fuera de la instrucción switch.

    class SwitchTest 
{
    static void Main()
    {
        Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); 
        Console.Write("Please enter your selection: "); 
        string s = Console.ReadLine(); 
        int n = int.Parse(s);
        int cost = 0;
        switch(n)
        {
        case 1:
            cost += 25;
            break;
        case 2:
            cost += 25;
            goto case 1;
        case 3:
            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:
        Coffee sizes: 1=Small 2=Medium 3=Large
        Please enter your selection: 2
        Please insert 50 cents.
        Thank you for your business.
    */
  • En el ejemplo anterior, se utilizó una variable de tipo integral, n, para los casos de la instrucción switch. Observe que también se puede utilizar la variable de cadena, s, directamente. En ese caso, la estructura switch puede presentar la siguiente forma:
switch(s)
{
    case "1":
        // ...
    case "2":
        // ...
}

El siguiente ejemplo muestra que se permite el paso de una etiqueta case a otra para etiquetas case vacías.

class SwitchTest2 
{
    static void Main()
    {
        int n = 2;
        switch(n) 
        {
            case 1:
            case 2: 
            case 3: 
                Console.WriteLine("It's 1, 2, or 3.");
                break; 
        default: 
            Console.WriteLine("Not sure what it is.");
            break; 
        }
    }
}
//  Output: It's 1, 2, or 3.

Especificación del lenguaje C#

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 5.3.3.6 Instrucción switch

  • 8.7.2 La instrucción switch

Vea también

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

The switch Statement

if-else (Referencia de C#)

Otros recursos

Referencia de C#