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


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

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

Синтаксис

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

Детали

Термин Определение
testexpression Обязательный. Выражение. Должен оценить один из основных типов данных (Boolean, UIntegerDecimalIntegerDoubleLongDateObjectSByteCharByteSingleStringShortULongи ).UShort
expressionlist Обязательный в инструкции Case . Список предложений выражений, представляющих значения соответствия для testexpression. Несколько предложений выражений разделяются запятыми. Каждое предложение может принимать одну из следующих форм:

- expression1 To expression2
- [ ] Is выражение сравнения
- выражение

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

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

Форма, указывающая только, рассматривается как expression особый случай Is формы, в которой сравнивающий оператор является знаком равенства (=). Эта форма оценивается как testexpression = expression.

Выражения, которые находятся в expressionlist любом типе данных, при условии, что они неявно преобразуются в тип и testexpression допустимы для comparisonoperator двух типов, с которыми он используется.
statements Необязательно. Одно или несколько операторов после Case выполнения, если testexpression соответствует любому предложению expressionlist.
elsestatements Необязательно. Одно или несколько инструкций, приведенных после Case Else выполнения, если testexpression не соответствует ни одному предложению в expressionlist любой из Case инструкций.
End Select Завершает определение Selectконструкции ...Case .

Замечания

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

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

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

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

Примечание.

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

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

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

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

Примечание.

Оператор Case с несколькими предложениями может проявлять поведение, известное как короткое замыкание. Visual Basic вычисляет предложения слева направо, и если он создает совпадение с testexpression, остальные предложения не оцениваются. Короткое замыкание может повысить производительность, но может привести к непредвиденным результатам, если вы ожидаете, что каждое выражение expressionlist будет оцениваться. Дополнительные сведения о коротком канале см. в разделе Логические выражения.

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

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

Пример

В следующем примере используется Select Case конструкция для записи строки, соответствующей значению переменной number. Вторая Case инструкция содержит значение, соответствующее текущему значению number, поэтому инструкция, которая записывает "От 6 до 8, включительно".

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

См. также