Select...Case-Anweisung (Visual Basic)Select...Case Statement (Visual Basic)

Führt eine von mehreren Gruppen von Anweisungen, je nach dem Wert eines Ausdrucks.Runs one of several groups of statements, depending on the value of an expression.

SyntaxSyntax

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

TeileParts

BegriffTerm DefinitionDefinition
testexpression Erforderlich.Required. Ausdruck.Expression. Muss auf einen der elementare Datentypen ausgewertet werden (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, und UShort).Must evaluate to one of the elementary data types (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, and UShort).
expressionlist Erforderlich eine Case Anweisung.Required in a Case statement. Liste der Expression-Klauseln darstellt übereinstimmenden Werte für testexpression.List of expression clauses representing match values for testexpression. Mehrere Ausdrucksklauseln werden durch Kommas getrennt.Multiple expression clauses are separated by commas. Jede Klausel kann einen der folgenden Formen annehmen:Each clause can take one of the following forms:

- expression1 To expression2- expression1 To expression2
-[ Is ] Vergleichsoperator Ausdruck- [ Is ] comparisonoperator expression
- Ausdruck- expression

Verwenden der To Schlüsselwort, um die Grenzen eines Bereichs von Übereinstimmung geben Werte für testexpression.Use the To keyword to specify the boundaries of a range of match values for testexpression. Der Wert der expression1 muss kleiner oder gleich dem Wert des expression2.The value of expression1 must be less than or equal to the value of expression2.

Verwenden der Is Schlüsselwort mit einem Vergleichsoperator (=, <>, <, <=, >, oder >=) auf den übereinstimmenden Werte für eine Einschränkung angegeben testexpression.Use the Is keyword with a comparison operator (=, <>, <, <=, >, or >=) to specify a restriction on the match values for testexpression. Wenn die Is -Schlüsselwort nicht angegeben wird, wird Sie automatisch vor eingefügt Vergleichsoperator.If the Is keyword is not supplied, it is automatically inserted before comparisonoperator.

Nur expression wird als ein Sonderfall des behandelt die Is bilden Where Vergleichsoperator ist das Gleichheitszeichen (=).The form specifying only expression is treated as a special case of the Is form where comparisonoperator is the equal sign (=). Dieses Formular wird ausgewertet, als testexpression = expression.This form is evaluated as testexpression = expression.

Die Ausdrücke in expressionlist kann einen beliebigen Datentyp aufweisen, vorausgesetzt, dass sie implizit in den Typ des testexpression und dem entsprechenden comparisonoperator ist gültig für die beiden Typen, die es mit verwendet wird.The expressions in expressionlist can be of any data type, provided they are implicitly convertible to the type of testexpression and the appropriate comparisonoperator is valid for the two types it is being used with.
statements Dies ist optional.Optional. Eine oder mehrere Anweisungen nach Case , ausgeführt werden, wenn testexpression entspricht jede beliebige Klausel in expressionlist.One or more statements following Case that run if testexpression matches any clause in expressionlist.
elsestatements Dies ist optional.Optional. Eine oder mehrere Anweisungen nach Case Else , ausgeführt werden, wenn testexpression entspricht nicht jede beliebige Klausel in der expressionlist aller der Case Anweisungen.One or more statements following Case Else that run if testexpression does not match any clause in the expressionlist of any of the Case statements.
End Select Beendet die Definition des der Select... Case Konstruktion.Terminates the definition of the Select...Case construction.

HinweiseRemarks

Wenn testexpression beliebige Case expressionlist -Klausel, die Anweisungen befolgen, die Case -Anweisung, die Sie zur nächsten Ausführen Case, Case Else, oder End Select Anweisung.If testexpression matches any Case expressionlist clause, the statements following that Case statement run up to the next Case, Case Else, or End Select statement. Anschließend wird die folgende Anweisung die Steuerung End Select.Control then passes to the statement following End Select. Wenn testexpression entspricht einer expressionlist -Klausel in mehr als eine Case -Klausel, um nur die Anweisungen nach der ersten Übereinstimmung führen.If testexpression matches an expressionlist clause in more than one Case clause, only the statements following the first match run.

Die Case Else -Anweisung wird zum Einführen der elsestatements ausführen, wenn keine Übereinstimmung, zwischen gefunden wird den testexpression und ein expressionlist -Klausel in eine beliebige andere Case Anweisungen.The Case Else statement is used to introduce the elsestatements to run if no match is found between the testexpression and an expressionlist clause in any of the other Case statements. Ist zwar nicht erforderlich Es empfiehlt sich, Sie haben, eine Case Else -Anweisung in Ihre Select Case -Konstruktion behandeln unvorhergesehene testexpression Werte.Although not required, it is a good idea to have a Case Else statement in your Select Case construction to handle unforeseen testexpression values. Wenn kein Case expressionlist Klausel entspricht testexpression und es gibt keine Case Else Anweisung Steuerelement übergibt die folgende Anweisung End Select.If no Case expressionlist clause matches testexpression and there is no Case Else statement, control passes to the statement following End Select.

Sie können mehrere Ausdrücke oder Bereiche in den einzelnen Case Klausel.You can use multiple expressions or ranges in each Case clause. Die folgende Zeile ist z. B. gültig.For example, the following line is valid.

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

Hinweis

Die Is Schlüsselwort in der Case und Case Else Anweisungen ist nicht identisch mit der Is Operator, die für den Vergleich von Objektverweisen verwendet wird.The Is keyword used in the Case and Case Else statements is not the same as the Is Operator, which is used for object reference comparison.

Sie können Bereiche und mehrere Ausdrücke für Zeichenfolgen angeben.You can specify ranges and multiple expressions for character strings. Im folgenden Beispiel Case entspricht jeder Zeichenfolge, die "Äpfel" genau gleich ist, verfügt über einen Wert zwischen "Nüsse" und "Suppe" in alphabetischer Reihenfolge oder enthält genauen denselben Wert wie der aktuelle Wert der testItem.In the following example, Case matches any string that is exactly equal to "apples", has a value between "nuts" and "soup" in alphabetical order, or contains the exact same value as the current value of testItem.

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

Die Einstellung der Option Compare Zeichenfolgenvergleiche auswirken können.The setting of Option Compare can affect string comparisons. Klicken Sie unter Option Compare Text, die Zeichenfolgen "Apples" und "Apples" bei einem Vergleich gleich, jedoch unter Option Compare Binary, nicht der Fall ist.Under Option Compare Text, the strings "Apples" and "apples" compare as equal, but under Option Compare Binary, they do not.

Hinweis

Ein Case ausgesondert, und als eine Anweisung mit mehreren Klauseln verkürzte.A Case statement with multiple clauses can exhibit behavior known as short-circuiting. Visual Basic wertet die Klauseln von links nach rechts, und wenn mindestens eine erzeugt eine Übereinstimmung mit testexpression, die verbleibenden Klauseln werden nicht ausgewertet.Visual Basic evaluates the clauses from left to right, and if one produces a match with testexpression, the remaining clauses are not evaluated. Verkürzte kann die Leistung verbessern, aber es kann zu unerwarteten Ergebnissen führen, wenn erwartet jeder Ausdruck in wird expressionlist ausgewertet werden soll.Short-circuiting can improve performance, but it can produce unexpected results if you are expecting every expression in expressionlist to be evaluated. Weitere Informationen über Kurzschlussverhalten finden Sie unter boolesche Ausdrücke.For more information on short-circuiting, see Boolean Expressions.

Wenn der Code innerhalb einer Case oder Case Else -Anweisungsblock muss nicht mehr der Anweisungen im Block ausgeführt, beendet den Block kann mithilfe der Exit Select Anweisung.If the code within a Case or Case Else statement block does not need to run any more of the statements in the block, it can exit the block by using the Exit Select statement. Dies überträgt die Steuerung sofort an die Anweisung nach End Select.This transfers control immediately to the statement following End Select.

Select Case Konstruktionen können geschachtelt werden.Select Case constructions can be nested. Jede geschachtelte Select Case Konstruktion benötigen einen übereinstimmenden End Select Anweisung und muss vollständig in einer einzelnen enthalten Case oder Case Else Anweisungsblock des äußeren Select Case Konstruktion, in dem sie geschachtelt ist.Each nested Select Case construction must have a matching End Select statement and must be completely contained within a single Case or Case Else statement block of the outer Select Case construction within which it is nested.

BeispielExample

Im folgenden Beispiel wird eine Select Case Konstruktion, um eine Zeile entsprechend dem Wert der Variablen schreiben number.The following example uses a Select Case construction to write a line corresponding to the value of the variable number. Die zweite Case -Anweisung enthält den Wert, der den aktuellen Wert der entspricht number, sodass die Anweisung, die "zwischen 6 und 8, inclusive" schreibt ausgeführt wird.The second Case statement contains the value that matches the current value of number, so the statement that writes "Between 6 and 8, inclusive" runs.

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 auchSee Also

Choose
End-AnweisungEnd Statement
If...Then...Else-AnweisungIf...Then...Else Statement
Option Compare-AnweisungOption Compare Statement
Exit-AnweisungExit Statement