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 , Short Single , String , , UInteger , , ULong e 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:- - To To - [ 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 testexpression comparisonoperator 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 Case
expressionlist
una clausola , le istruzioni che lo Case
segue vengono eseguite fino all'istruzione Case
, Case Else
o 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 elsestatements
testexpression
expressionlist
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
.testexpression
Case
expressionlist
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 Text
le stringhe "Apples" e "apples" vengono confrontate come uguali, ma in Option Compare Binary
non lo fanno.
Nota
Un'istruzione Case
con più clausole può presentare un comportamento noto come Case
. Visual Basic valuta le clausole da sinistra a testexpression
destra 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 Case
Case 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 Case
Case Else
Select 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 number
valore 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