Istruzione Select...Case (Visual Basic)

Esegue uno dei diversi gruppi di istruzioni, a seconda del valore di un'espressione.

Sintassi

Select [ Case ] testexpression  
    [ Case expressionlist  
        [ statements ] ]  
    [ Case Else  
        [ elsestatements ] ]  
End Select  

Parti

Termine Definizione
testexpression Obbligatorio. Espressione. Deve valutare uno dei tipi di dati elementari (Boolean, ByteStringIntegerDecimalLongDoubleObjectSByteDateCharSingleUIntegerShortULonge ).UShort
expressionlist Obbligatorio in un'istruzione Case . Elenco di clausole di espressione che rappresentano valori di corrispondenza per testexpression. Più clausole di espressione sono separate da virgole. Ogni clausola può accettare uno dei moduli seguenti:

- expression1Toexpression2
- [ Is ] confrontooperatorexpression
- Espressione

Usare la To parola chiave per specificare i limiti di un intervallo di valori di corrispondenza per testexpression. Il valore di expression1 deve essere minore o uguale al valore di expression2.

Usare la Is parola chiave con un operatore di confronto (=, <>, <<=, >, o >=) per specificare una restrizione sui valori di corrispondenza per testexpression. Se la parola chiave non viene specificata, viene inserita automaticamente prima del Isconfrontooperator.

Il modulo che specifica expression solo viene considerato come un caso speciale del Is modulo in cui confrontooperator è il segno di uguale (=). Questo modulo viene valutato come testexpression = expression.

Le espressioni in expressionlist possono essere di qualsiasi tipo di dati, purché siano convertibili in modo implicito nel tipo di testexpression e che l'oggetto appropriato comparisonoperator sia valido per i due tipi con cui viene usato.
statements facoltativo. Una o più istruzioni seguenti che Case vengono eseguite se testexpression corrisponde a una clausola in expressionlist.
elsestatements facoltativo. Una o più istruzioni seguenti Case Else che vengono eseguite se testexpression non corrispondono a alcuna clausola in expressionlist una delle Case istruzioni.
End Select Termina la definizione della Selectcostruzione ...Case .

Commenti

Se testexpression corrisponde a qualsiasi Caseexpressionlist clausola, le istruzioni seguenti Case all'istruzione vengono eseguite fino all'istruzione , o End Select successivaCaseCase Else. Il controllo passa quindi all'istruzione seguente End Select. Se testexpression corrisponde a una expressionlist clausola in più di una Case clausola, solo le istruzioni che seguono la prima esecuzione della corrispondenza.

L'istruzione Case Else viene usata per introdurre l'oggetto elsestatements da eseguire se non viene trovata alcuna corrispondenza tra l'oggetto testexpression e una expressionlist clausola in una qualsiasi delle altre Case istruzioni. Anche se non è necessario, è consigliabile avere un'istruzione Case Else nella costruzione Select Case per gestire valori imprevisti testexpression . Se nessuna clausola corrisponde e non CaseexpressionlistCase Else esiste alcuna istruzione, il controllo passa all'istruzione seguenteEnd Select.testexpression

È possibile usare più espressioni o intervalli in ogni Case clausola. Ad esempio, la riga seguente è valida.

Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber

Nota

La Is parola chiave usata nelle Case istruzioni e Case Else non è uguale a Is Operator, usata per il confronto dei riferimenti a oggetti.

È possibile specificare intervalli e più espressioni per le stringhe di caratteri. Nell'esempio seguente corrisponde Case a qualsiasi stringa esattamente uguale a "mele", ha un valore tra "noci" e "zuppa" in ordine alfabetico oppure contiene lo stesso valore del valore corrente di testItem.

Case "apples", "nuts" To "soup", testItem

L'impostazione di può influire sui confronti delle Option Compare stringhe. In Option Compare Text, le stringhe "Apples" e "apples" vengono confrontate come uguali, ma in Option Compare Binary, non sono.

Nota

Un'istruzione Case con più clausole può presentare un comportamento noto come short-circuiting. Visual Basic valuta le clausole da sinistra a destra e se ne produce una corrispondenza con testexpression, le clausole rimanenti non vengono valutate. Il corto circuito può migliorare le prestazioni, ma può produrre risultati imprevisti se si prevede che ogni espressione in expressionlist venga valutata. Per altre informazioni sul corto circuito, vedere Espressioni booleane.

Se il codice all'interno di un Case blocco di istruzioni o Case Else non deve eseguire più istruzioni nel blocco, può uscire dal blocco usando l'istruzione Exit Select . Questo controllo trasferisce immediatamente all'istruzione seguente End Select.

Select Case le costruzioni possono essere annidate. Ogni costruzione annidata Select Case deve avere un'istruzione corrispondente End Select e deve essere completamente contenuta all'interno di un singolo Case blocco o Case Else istruzione della costruzione esterna Select Case all'interno del quale è annidato.

Esempio

Nell'esempio seguente viene usata una costruzione per scrivere una Select Case riga corrispondente al valore della variabile number. La seconda Case istruzione contiene il valore corrispondente al valore corrente di number, quindi l'istruzione che scrive "Tra 6 e 8, inclusiva" viene eseguita.

Dim number As Integer = 8
Select Case number
    Case 1 To 5
        Debug.WriteLine("Between 1 and 5, inclusive")
        ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8
        Debug.WriteLine("Between 6 and 8, inclusive")
    Case 9 To 10
        Debug.WriteLine("Equal to 9 or 10")
    Case Else
        Debug.WriteLine("Not between 1 and 10, inclusive")
End Select

Vedi anche