Оператор Select...Case (Visual Basic)Select...Case Statement (Visual Basic)

Запускает один из нескольких групп операторов в зависимости от значения выражения.Runs one of several groups of statements, depending on the value of an expression.

СинтаксисSyntax

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

ЧастиParts

ТерминTerm ОпределениеDefinition
testexpression Обязательно.Required. Выражение.Expression. Необходимо иметь один из простейших типов данных (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, и 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 Требуется в Case инструкции.Required in a Case statement. Список предложений выражение, представляющее совпадают со значениями для testexpression.List of expression clauses representing match values for testexpression. Несколько предложений выражения разделяются запятыми.Multiple expression clauses are separated by commas. Каждое условие может принимать одно из следующих форм:Each clause can take one of the following forms:

- expression1 To expression2- expression1 To expression2
-[ Is ] comparisonoperator выражение- [ Is ] comparisonoperator expression
- Выражение- expression

Используйте To ключевое слово, чтобы задать границы диапазона совпадения значений для testexpression.Use the To keyword to specify the boundaries of a range of match values for testexpression. Значение expression1 должно быть меньше или равно значению expression2.The value of expression1 must be less than or equal to the value of expression2.

Используйте Is ключевое слово с помощью оператора сравнения (=, <>, <, <=, >, или >=) для определения ограничения возможных значений для testexpression.Use the Is keyword with a comparison operator (=, <>, <, <=, >, or >=) to specify a restriction on the match values for testexpression. Если Is ключевое слово не предоставляется, то он автоматически вставляется перед comparisonoperator.If the Is keyword is not supplied, it is automatically inserted before comparisonoperator.

Формы, указав только expression рассматривается как особый случай Is форме where comparisonoperator является знак равенства (=).The form specifying only expression is treated as a special case of the Is form where comparisonoperator is the equal sign (=). Эта форма вычисляется как testexpression = expression.This form is evaluated as testexpression = expression.

Выражения в expressionlist может быть любого типа данных, если они неявно преобразуются в тип testexpression и соответствующий comparisonoperator является допустимым для двух типов, он используется с.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 Необязательный.Optional. Один или несколько следующих инструкций Case , если выполнения testexpression соответствует любое предложение в expressionlist.One or more statements following Case that run if testexpression matches any clause in expressionlist.
elsestatements Необязательный.Optional. Один или несколько следующих инструкций Case Else , если выполнения testexpression не соответствует любое предложение в expressionlist любого Case инструкции.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 Завершает определение Select... Case построения.Terminates the definition of the Select...Case construction.

ПримечанияRemarks

Если testexpression соответствует любому Case expressionlist предложение, инструкции, следующие за, Case запущена инструкция до следующего Case, Case Else, или End Select инструкции.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. Затем управление передается оператору, следующему End Select.Control then passes to the statement following End Select. Если testexpression соответствует expressionlist предложение в нескольких Case предложение, выполнить инструкции, следующие за первое совпадение.If testexpression matches an expressionlist clause in more than one Case clause, only the statements following the first match run.

Case Else Оператор используется для представления elsestatements для запуска, если совпадение не найдено между testexpression и expressionlist предложения в любой другой Case инструкции.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. Несмотря на то, что не обязательно, рекомендуется иметь Case Else инструкции в вашей Select Case построения для обработки непредвиденных testexpression значения.Although not required, it is a good idea to have a Case Else statement in your Select Case construction to handle unforeseen testexpression values. Если не Case expressionlist предложение соответствует testexpression и не Case Else инструкции, управление передается оператору, следующему End Select.If no Case expressionlist clause matches testexpression and there is no Case Else statement, control passes to the statement following End Select.

Можно использовать несколько выражений и диапазонов в каждом Case предложения.You can use multiple expressions or ranges in each Case clause. Например следующая строка является допустимым.For example, the following line is valid.

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

Примечание

Is Используется ключевое слово Case и Case Else инструкции не является таким же, как оператор Is, который используется для сравнения объекта ссылки.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.

Можно указать диапазоны и несколько выражений для строк.You can specify ranges and multiple expressions for character strings. В следующем примере Case соответствует любой строке, которая равна «apples», имеет значение между «nuts» и «soup» в алфавитном порядке или содержит точно совпадает со значением текущего значения 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

Параметр Option Compare может влиять на сравнения строк.The setting of Option Compare can affect string comparisons. В разделе Option Compare Text, строки «Яблоки» и «яблоки» считаются равными, но в разделе Option Compare Binary, это не так.Under Option Compare Text, the strings "Apples" and "apples" compare as equal, but under Option Compare Binary, they do not.

Примечание

Объект Case инструкции с несколькими предложениями может демонстрировать поведение, известный как сокращенного вычисления.A Case statement with multiple clauses can exhibit behavior known as short-circuiting. Visual Basic вычисляет предложения слева направо и если он найдено соответствие с testexpression, оставшиеся предложения не обрабатываются.Visual Basic evaluates the clauses from left to right, and if one produces a match with testexpression, the remaining clauses are not evaluated. Сокращенные вычисления могут повысить производительность, но он может привести к непредвиденным результатам, если ожидалось, что каждое выражение в expressionlist для оценки.Short-circuiting can improve performance, but it can produce unexpected results if you are expecting every expression in expressionlist to be evaluated. Дополнительные сведения о сокращенное вычисление в разделе логические выражения.For more information on short-circuiting, see Boolean Expressions.

Если код внутри Case или Case Else блок инструкций необходимо выполнения любых дополнительных инструкций в блоке, можно выйти из блока с помощью Exit Select инструкции.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. Управление передается оператору, следующему End Select.This transfers control immediately to the statement following End Select.

Select Case конструкции могут быть вложенными.Select Case constructions can be nested. Каждая вложенная Select Case конструкция должна иметь соответствующий End Select инструкции и должны полностью содержаться в одном Case или Case Else блок операторов внешнего Select Case построения, в течение которого он является вложенным.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.

ПримерExample

В следующем примере используется Select Case конструкции для записи строки, соответствующей значению переменной number.The following example uses a Select Case construction to write a line corresponding to the value of the variable number. Второй Case инструкция содержит значение, соответствующее значение текущей number, поэтому инструкция, которая записывает «между 6 и 8, inclusive» работает.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

См. такжеSee Also

Choose
Оператор EndEnd Statement
Оператор If...Then...ElseIf...Then...Else Statement
Оператор Option CompareOption Compare Statement
Оператор ExitExit Statement