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:

- expression1Toexpression2
- [ Is ] Vergleichsoperatorausdruck
- 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 testexpressionanzugeben. 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 = expressionausgewertet.

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 Caseexpressionlist-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 Caseexpressionlist 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 Textvergleichen 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

Siehe auch