Condividi tramite


switch (Riferimenti per C#)

Aggiornamento: novembre 2007

L'istruzione switch è un'istruzione di controllo che gestisce più selezioni ed enumerazioni trasferendo il controllo a una delle istruzioni case presenti all'interno del corpo, come illustrato nell'esempio riportato di seguito:

Esempio

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

Il controllo viene trasferito all'istruzione case che corrisponde al valore dello switch. L'istruzione switch può comprendere un numero qualsiasi di istanze case. Tuttavia, due istruzioni case non possono avere lo stesso valore. L'esecuzione del corpo dell'istruzione inizia con l'istruzione selezionata e continua finché l'istruzione break non trasferisce il controllo all'esterno del corpo di case. È necessario inserire un'istruzione di spostamento come break dopo ogni blocco case, compreso l'ultimo, anche nel caso di un'istruzione case o default. Tranne che per un'eccezione, (a differenza dell'istruzione switch di C++), C# non supporta un passaggio implicito da un'etichetta case a un'altra. L'unica eccezione si verifica se un'istruzione case non dispone di alcun codice.

Se nessuna espressione case corrisponde al valore dello switch, il controllo viene trasferito all'istruzione o alle istruzioni che seguono l'etichetta default facoltativa. Se non è presente alcuna etichetta default, il controllo viene trasferito all'esterno di 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.
    */
  • Nell'esempio precedente è stata utilizzata la variabile di tipo integrale n per le istanze case dell'istruzione switch. In alternativa, è anche possibile utilizzare direttamente la variabile stringa s. In questo caso, è possibile utilizzare le istanze case dell'istruzione switch come illustrato di seguito.
switch(s)
{
    case "1":
        // ...
    case "2":
        // ...
}

Nell'esempio riportato di seguito viene illustrato che il passaggio da un'etichetta case a un'altra è consentito per le etichette case vuote.

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.

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:

  • 5.3.3.6 Istruzione switch

  • 8.7.2 Istruzione switch

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Parole chiave di C#

The switch Statement

if-else (Riferimenti per C#)

Altre risorse

Riferimenti per C#