Поделиться через


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

Выполняет один из блоков операторов в зависимости от значения выражения.

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

Части

Термин

Определение

testexpression

Обязательный.Выражение.Должен быть равен одному их простых типов данных (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong и UShort).

expressionlist

Обязателен в операторе Case.Список возможных значений для testexpression.Несколько выражений разделяются запятыми.Каждое условие может принимать следующие формы:

  • expression1 To expression2

  • Is ] comparisonoperator expression

  • expression

Используйте зарезервированное слово To, чтобы указать диапазон значений для testexpression.Значение expression1 должно быть меньше или равно значению expression2.

Используйте зарезервированное слово Is с оператором сравнения (=, <>, <, <=, > или >=) для ограничения возможных значений testexpression.Если зарезервированное слово Is отсутствует, оно автоматически вставляется перед comparisonoperator.

Вид, в котором предоставляется только expression, рассматривается как особый случай использования Is, где comparisonoperator — знак равенства (=).Данная форма вычисляется как testexpression = expression.

Выражения в expressionlist могут иметь любой тип данных, если они неявно преобразуемы в тип данных, к которому относится testexpression и соответствующий элемент comparisonoperator подходит для двух используемых с ним типов данных.

statements

Необязательный.Один или несколько операторов, следующих за Case, которые запускаются, если testexpression соответствует любому предложению в expressionlist.

elsestatements

Необязательный.Один или несколько операторов, следующих за Case Else, которые выполняются, если testexpression не соответствует ни одному из предложений в expressionlist всех операторов Case.

End Select

Завершает определение конструкции Select...Case.

Заметки

Если testexpression соответствует любому Case предложения expressionlist, операторы, следующие за инструкцией Case переводят к следующему оператору Case, Case Else или End Select.Затем управление передается оператору, следующему за оператором End Select.Если testexpression соответствует предложению expressionlist более чем в одном условии Case, выполнятся только операторы, следующие за первым сопоставлением.

Оператор Case Else используется для выполнения elsestatements, если не найдено ни одного соответствия между testexpression и expressionlist в любом из других операторов Case.Рекомендуется (хотя это не обязательно) иметь оператор Case Else в конструкции Select Case для обработки непредвиденных значений testexpression.Если отсутствует оператор Case, для которого предложение expressionlist сопоставляется testexpression и отсутствует Case Else, то управление будет передано следующему оператору End Select.

В каждом предложении Case можно использовать несколько выражений и диапазонов.Например, допустима следующая строка:

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

ПримечаниеПримечание

Ключевое слово Is, используемое в операторах Case и Case Else отличается от Оператор Is (Visual Basic), который используется для сравнения ссылок объекта.

Можно указывать диапазоны и несколько выражений для строк.В следующем примере Case пропускает любую строку, которая равна "apples", имеет значение между "nuts" и "soup" в алфавитном порядке или содержит точно такие же значения, как текущее значение testItem.

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

Параметр Option Compare может повлиять на сравнение.В Option Compare Text строки "Apples" и "apples" при сравнении воспринимаются как одинаковые, а при Option Compare Binary — нет.

ПримечаниеПримечание

Оператор Case с несколькими предложениями может демонстрировать поведение, называемое short-circuiting.Visual Basic вычисляет предложения слева направо, и если одно из них совпадает с testexpression, то оставшиеся предложения не обрабатываются.Укорачивание может повысить производительность, однако оно может привести к непредсказуемым результатам, если ожидалось, что оцениваться будет каждое выражение в expressionlist.Дополнительные сведения об укорачивании содержатся в разделе Логические выражения (Visual Basic).

Если код в пределах блока операторов Case или Case Else не требует выполнения любых дополнительных операторов в блоке, можно выйти из блока с помощью оператора Exit Select.Это позволяет немедленно передать управление оператору, следующему за оператором End Select.

Конструкции Select Case могут быть вложенными.Каждая вложенная конструкция Select Case должна иметь соответствующий оператор End Select и должна целиком содержаться внутри одного оператора Case или Case Else внешнего блока конструкции Select Case в которой она является вложенной.

Пример

В следующем примере используется оператор Select Case для записи строки, соответствующей значению переменной number.Второй оператор Case содержит значение, соответствующее текущему значению number, поэтому выполняется оператор, выводящий строку "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

См. также

Ссылки

Choose

Оператор End

Оператор If...Then...Else (Visual Basic)

Оператор Option Compare

Оператор Exit (Visual Basic)