Tracce
/
C#
C#
/
Programma
/
Istruzioni switch
Is

Istruzioni switch in C#

2 esercizi

Informazioni su Istruzioni switch

Le istruzioni switch hanno una storia illustre nei linguaggi di programmazione. Furono introdotte in C, dove erano apprezzate per la loro velocità. Quella velocità aveva però un costo: una funzionalità molto limitata. In C# il ruolo dell'istruzione switch è stato ampliato oltre gli interi. Le istruzioni switch possono comprendere qualsiasi tipo arbitrario, di valore o di riferimento.

Se arrivi da un linguaggio funzionale, lavorare con le istruzioni switch (e con le espressioni switch di cui parliamo altrove) è la cosa più vicina che troverai in C# all'uso delle unioni discriminate e del pattern matching. Tuttavia, sono ben lontane dal potere delle unioni discriminate di garantire la sicurezza dei tipi.

Le istruzioni switch semplici assomigliano ai loro antenati in C e combinano switch, case, break e default.

int direction = GetDirection();
switch (direction)
{
    case 1:
        GoLeft();
        break;
    case 2:
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

Il modello precedente può essere usato con qualsiasi tipo semplice (primitivi e stringhe).

Quando si aggiungono anche i tipi di riferimento, entra in gioco una sintassi aggiuntiva: prima per eseguire il cast verso il basso del tipo, poi per aggiungere delle guardie (when), anche se le guardie si possono usare anche con i case di valori semplici. Lo illustriamo qui sotto:

Animal animal = GetAnimal();

switch(animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}
  • La clausola default è facoltativa, ma di solito è opportuna.
  • L'istruzione break è obbligatoria per qualsiasi clausola case non vuota.
  • Ovviamente, il tipo di tutti gli argomenti delle etichette case deve derivare dal tipo dell'argomento di switch. Un argomento di switch di tipo Object consente ovviamente la gamma più ampia.
  • L'espressione di guardia può includere qualsiasi cosa sia nello scope, non solo i membri dell'argomento del case.
  • Più case con argomenti diversi possono fare riferimento allo stesso blocco di codice.

La documentazione sull'istruzione switch offre un'introduzione alle istruzioni switch.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Istruzioni switch

La pratica è bloccata

Sblocca 6 altri esercizi per esercitarti su Istruzioni switch