Select...Case-Anweisung (Visual Basic)
Führt eine von mehreren Anweisungsgruppen aus, abhängig vom Wert eines Ausdrucks.
Syntax
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Bestandteile
Begriff | Definition |
---|---|
testexpression |
Erforderlich. Ausdruck Muss zu einem der elementaren Datentypen ausgewertet werden (Boolean , Byte , Char , Date , Double , Decimal , Integer , Long , Object , SByte , Short , Single , String , UInteger , ULong und UShort ). |
expressionlist |
Erforderlich in einer Case -Anweisung. Liste der Ausdrucksklauseln, die Übereinstimmungswerte für testexpression . Mehrere Ausdrucksklauseln werden durch Kommas getrennt. Jede Klausel kann eine der folgenden Formen annehmen:- Ausdruck1 To Ausdruck2- [ Is ] comparisonoperator expression- expression Verwenden Sie das To -Schlüsselwort, um die Grenzen eines Bereichs von Übereinstimmungswerten für testexpression . Der Wert von expression1 muss kleiner oder gleich dem Wert von expression2 sein.Verwenden Sie das Is -Schlüsselwort mit einem Vergleichsoperator (= , <> , , < , <= , > oder >= ), um eine Einschränkung für die Übereinstimmungswerte für testexpression anzugeben. Wenn das Is -Schlüsselwort nicht angegeben wird, wird es automatisch vor dem Vergleichsoperatoreingefügt.Das Formular, das nur expression angibt, wird als Sonderfall des Is -Formulars behandelt, in dem der Vergleichsoperator das Gleichheitszeichen (= ) ist. Dieses Formular wird als testexpression = expression ausgewertet.Die Ausdrücke in expressionlist können ein beliebiger Datentyp sein, vorausgesetzt, sie sind implizit in den Typ von testexpression konvertierbar, und der entsprechende comparisonoperator ist gültig für die beiden Typen, mit denen sie verwendet wird. |
statements |
Optional. Eine oder mehrere Anweisungen folgen Case , die ausgeführt werden, wenn testexpression einer Klausel in expressionlist entspricht. |
elsestatements |
Optional. Eine oder mehrere Anweisungen folgen Case Else , die ausgeführt werden, wenn testexpression mit keiner Klausel in einer expressionlist der Case -Anweisung übereinstimmt. |
End Select |
Beendet die Definition der Select ...Case -Konstruktion. |
Bemerkungen
Wenn testexpression
mit einer Case
expressionlist
-Klausel übereinstimmt, werden die Anweisungen, die auf diese Case
-Anweisung folgen, bis zur nächsten Case
-, Case Else
- oder End Select
-Anweisung ausgeführt. Das Steuerelement wird dann an die Anweisung übergeben, die End Select
folgt. Wenn testexpression
eine expressionlist
Klausel in mehreren Case
Klauseln übereinstimmt, werden nur die Anweisungen nach der ersten Übereinstimmung ausgeführt.
Die Case Else
Anweisung wird verwendet, um die elsestatements
Ausführung einzuführen, wenn keine Übereinstimmung zwischen der testexpression
und einer expressionlist
Klausel in einer der anderen Case
Anweisungen gefunden wird. Obwohl nicht erforderlich, ist es ratsam, eine Case Else
Anweisung in Ihrer Select Case
Konstruktion zu haben, um unvorhergesehene testexpression
Werte zu behandeln. Wenn keine Case
expressionlist
-Klausel mit testexpression
übereinstimmt und keine Case Else
-Anweisung vorhanden ist, wird das Steuerelement an die Anweisung übergeben, die End Select
folgt.
Sie können in jeder Case
Klausel mehrere Ausdrücke oder Bereiche verwenden. Die folgende Zeile ist beispielsweise gültig.
Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber
Hinweis
Der Is
in den Case
- und Case Else
-Anweisungen verwendete Schlüsselwort (keyword) ist nicht mit dem Is-Operator identisch, der für den Vergleich von Objektverweisen verwendet wird.
Sie können Bereiche und mehrere Ausdrücke für Zeichenfolgen angeben. Im folgenden Beispiel wird eine beliebige Zeichenfolge abgeglichen, Case
die genau gleich "Äpfel" ist, einen Wert zwischen "Nüssen" und "Suppe" in alphabetischer Reihenfolge aufweist oder den exakt gleichen Wert wie der aktuelle Wert von testItem
enthält.
Case "apples", "nuts" To "soup", testItem
Die Einstellung Option Compare
kann sich auf Zeichenfolgenvergleiche auswirken. Unter Option Compare Text
vergleichen die Zeichenfolgen "Äpfel" und "Äpfel" als gleich, aber unter Option Compare Binary
sind sie es nicht.
Hinweis
Eine Case
Anweisung mit mehreren Klauseln kann ein Verhalten aufweisen, das als Kurzschlussbezeichnet wird. Visual Basic wertet die Klauseln von links nach rechts aus, und wenn eine Übereinstimmung mit testexpression
erzeugt wird, werden die verbleibenden Klauseln nicht ausgewertet. Kurzschlüsse können die Leistung verbessern, können jedoch zu unerwarteten Ergebnissen führen, wenn Sie erwarten, dass jeder Ausdruck in expressionlist
ausgewertet wird. Weitere Informationen zum Kurzschluss finden Sie unter Boolesche Ausdrücke.
Wenn der Code in einem Case
- oder Case Else
-Anweisungsblock keine weiteren Anweisungen im Block ausführen muss, kann er den Block mithilfe der Exit Select
-Anweisung beenden. Dadurch wird das Steuerelement sofort an die Anweisung nach End Select
übertragen.
Select Case
-Konstruktionen können verschachtelt werden. Jede geschachtelte Select Case
-Konstruktion muss über eine übereinstimmende End Select
-Anweisung verfügen und muss vollständig in einem einzelnen Case
-Anweisungsblock Case Else
der äußeren Select Case
-Konstruktion enthalten sein, in der sie geschachtelt ist.
Beispiel
Im folgenden Beispiel wird eine Select Case
-Konstruktion verwendet, um eine Zeile zu schreiben, die dem Wert der Variablen number
entspricht. Die zweite Case
-Anweisung enthält den Wert, der dem aktuellen Wert entspricht number
, sodass die Anweisung, die „Zwischen 6 und 8, einschließlich“ schreibt, ausgeführt wird.
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