Оператор Select...Case (Visual Basic)
Выполняет одну из нескольких групп операторов в зависимости от значения выражения.
Синтаксис
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Детали
Термин | Определение |
---|---|
testexpression |
Обязательный. Выражение. Должен оценить один из основных типов данных (Boolean , UInteger Decimal Integer Double Long Date Object SByte Char Byte Single String Short ULong и ).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
, выполняются до следующей Case
Case 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