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 restituire uno dei tipi di dati elementari (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, ShortSingle, String, , UInteger, , ULonge UShort).
expressionlist Obbligatorio in un'istruzione Case . Elenco di clausole di espressione che rappresentano i valori di corrispondenza per testexpression. Più clausole di espressione sono separate da virgole. Ogni clausola può assumere uno dei formati seguenti:

- - ToTo
- [ Is ] Is
- -

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 Is parola chiave non viene specificata, viene inserita automaticamente prima Is.

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

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

Commenti

Se testexpression corrisponde a Caseexpressionlist una clausola , le istruzioni che lo Case segue vengono eseguite fino all'istruzione Case, Case Elseo End Select successiva. Il controllo passa quindi all'istruzione che segue End Select. Se testexpression corrisponde a una expressionlist clausola in più clausole Case , vengono eseguite solo le istruzioni dopo la prima corrispondenza.

L'istruzione Case Else viene usata per introdurre elsestatementstestexpressionexpressionlist l'oggetto da eseguire se non viene trovata alcuna corrispondenza tra e una clausola in una delle altre Case istruzioni . Sebbene non sia obbligatorio, è buona idea avere un'istruzione Case Else nella Select Case costruzione per gestire valori imprevisti testexpression . Se nessuna clausola corrisponde e non è presente alcuna Case Else istruzione , il controllo passa all'istruzione che segue End Select.testexpressionCaseexpressionlist

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

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

Nota

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

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

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

L'impostazione di Option Compare può influire sui confronti tra stringhe. In Option Compare Textle stringhe "Apples" e "apples" vengono confrontate come uguali, ma in Option Compare Binarynon lo fanno.

Nota

Un'istruzione Case con più clausole può presentare un comportamento noto come Case. Visual Basic valuta le clausole da sinistra a testexpressiondestra e se una produce una corrispondenza con , 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 sia valutata. Per altre informazioni sul corto circuito, vedere Espressioni booleane.

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

Select Case Le strutture possono essere annidate. Ogni costruzione annidata Select Case deve avere un'istruzione End Select corrispondente e CaseCase ElseSelect Case deve essere completamente contenuta all'interno di un singolo blocco di istruzioni o della costruzione esterna all'interno della quale è annidata.

Esempio

Nell'esempio seguente viene utilizzata Select Case una costruzione per scrivere una riga corrispondente al valore della variabile number. La seconda Case istruzione contiene il valore corrispondente al numbervalore corrente di , quindi viene eseguita l'istruzione che scrive "Between 6 and 8, inclusive".

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