Bisogna stare attenti a come si pensa circa la dichiarazione switch
qui. C'è nessuna creazione di scope variabili in corso, infatti. Non lasciare il fatto che solo perché il codice all'interno dei casi viene rientrato, che risiede all'interno di un ambito figlio.
Quando viene compilato un blocco di interruttori, le etichette case
vengono semplicemente convertite in etichette e l'istruzione goto
appropriata viene eseguita all'inizio dell'istruzione switch in base all'espressione di commutazione. Infatti, è possibile utilizzare manualmente le istruzioni goto
per creare situazioni "fall-through" (che C# supporta direttamente), come suggerito da the MSDN page.
goto case 1;
Se specificamente voleva creare ambiti per ogni caso all'interno del blocco switch
, si potrebbe fare quanto segue.
...
case 1:
{
string x = "SomeString";
...
break;
}
case 2:
{
string x = "SomeOtherString";
...
break;
}
...
Questo richiede di ridichiarare la variabile x
(altrimenti si riceverà un errore di compilazione). Il metodo di scoping di ciascuna (o almeno di alcune) può essere abbastanza utile in determinate situazioni e lo si vedrà di sicuro nel codice di volta in volta.
è sufficiente inserire stringa x = "SomeOtherString"; quindi funzionerà. il, non è possibile utilizzare la variabile caso 1 nel caso in cui 2 si verificherà un errore fuori campo. –
assicurati che il caso 2 richieda la modifica del codice. –
@Syed: non è corretto. NESSUN errore si verifica con questo codice. –