Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Выполняет одну из нескольких групп операторов в зависимости от значения выражения.
Синтаксис
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Детали
| Термин | Определение |
|---|---|
testexpression |
Обязательный. Выражение. Должен оценить один из основных типов данных (Boolean, ByteCharDateDoubleDecimalIntegerLongObjectSByteShortSingleStringUIntegerULongи ).UShort |
expressionlist |
Обязательный в инструкции Case . Список предложений выражений, представляющих значения соответствия для testexpression. Несколько предложений выражений разделяются запятыми. Каждое предложение может принимать одну из следующих форм:- expression1 Toexpression2- [ ] 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 соответствует любому Caseexpressionlist предложению, инструкции, приведенные ниже инструкцииCase, выполняются до следующей CaseCase Elseили End Select инструкции. Затем элемент управления передается в следующую End Selectинструкцию. Если testexpression соответствует предложению expressionlist в нескольких Case предложениях, то только инструкции после первого запуска совпадения.
Оператор Case Else используется для представления elsestatements запуска, если совпадение между testexpression предложением и expressionlist предложением в любой из других Case инструкций не найдено. Хотя это не обязательно, рекомендуется иметь Case Else инструкцию в построении Select Case для обработки непредвиденных testexpression значений. Если предложение не совпадает Case и оператор отсутствует expressionlisttestexpressionCase Else, элемент управления передается в следующую 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