2014-05-22 14 views
9

Sembra che impili i casi insieme non funzionano come uno. Poiché i casi VB.NET non richiedono l'uso di Exit Select/Return, sembra che venga inserito automaticamente ogni volta che viene rilevato un nuovo caso sotto di esso?Stacking VB.NET Selezionare le istruzioni caso insieme come in Switch C#/Java

Dim Test as Integer = 12 

Select Case Test 
    Case 11 
    Case 12 
    Case 13 
    MsgBox.Show("Could be 11 or 12 or 13?") 
End Select 

Non sembra funzionare solo 13 opere ..

Gotta always remember this rule that you can't stack Cases like this from now on
Non è facile da ricordare quando porting applications.`

+0

Il [sito dotnet perls] (http://www.dotnetperls.com/select-vbnet) mi ha fatto lo stesso errore ... – Zac

+0

Haha si qualcuno deve segnalare a quel sito che si sbagliava – SSpoke

risposta

14

La vostra comprensione è corretta. VB non "fallirà".

Specificare un singolo Case e separare ogni espressione con una virgola:

Select Case Test 
    Case 11, 12, 13 
     MsgBox.Show("Could be 11 or 12 or 13?") 
End Select 

In alternativa, è possibile utilizzare un intervallo con la parola chiave To per ottenere la stessa cosa:

Select Case Test 
    Case 11 To 13 
     MsgBox.Show("Could be 11 or 12 or 13?") 
End Select 

Per ulteriori informazioni , vedi the documentation.

+1

Grazie dovrebbe fare in modo che rilevi il pattern sopra se sono tutti vuoti la stessa cosa, ma poi perderai la possibilità di usarlo come filtro ignore. – SSpoke

+0

Questo è argomento di discussione. Potrei essere d'accordo perché sono abituato allo schema, ma potrebbe essere fonte di confusione per molte persone VB. Considera il caso in cui hai avuto una singola dichiarazione dopo il caso che, durante il debug, commenta. Perché VB non richiede una "pausa" sarebbe davvero difficile spiegare il nuovo comportamento - perché ha iniziato a cadere. Non è un comportamento esplicito, né è chiaro guardare il codice. –

+1

Ya ora che ci penso, probabilmente non dovrebbero cambiarlo ora da tbh dato che fa parte del modo in cui BASIC ha funzionato dall'inizio per anni e in più sembra recuperare quello con una funzione migliore che lo switch non ha solo ho visto il '<' '>' confronti in thread correlati roba abbastanza potente. 'Devo sempre ricordare questa regola che non è possibile impilarli da ora in poi non è facile ricordarlo durante il porting delle applicazioni – SSpoke

Problemi correlati