Оператор Select Case используется для проверки значения выражения на соответствие одному или нескольким случаям. Это альтернатива нескольким вложенным If...ElseIf, что делает код чище и проще для чтения.
Особенности:
Case может включать диапазоны (Case 1 To 10), отдельные значения (Case 2, 4, 6), сложные выражения (Case Is > 100).Сложные кейсы:
Dim status As Integer = 7 Select Case status Case 1 To 5 Console.WriteLine("От 1 до 5") Case 6, 7, 8 Console.WriteLine("От 6 до 8") Case Is > 10 Console.WriteLine("Больше 10") Case Else Console.WriteLine("Другое значение") End Select
Отличия от If...ElseIf:
If...ElseIf позволяет строить более гибкие проверки с логическими операторами.Вопрос: “Как поведет себя Select Case при проверке строкового значения, если кейсы различаются по регистру символов?”
Правильный ответ: Сравнение в Select Case происходит с учётом параметра Option Compare. По умолчанию сравнение в Visual Basic не чувствительно к регистру (Option Compare Text), но может быть изменено (Option Compare Binary). Если включён Option Compare Binary, "test" и "Test" будут считаться разными.
Пример:
' В начале файла: ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("Сработает? Нет") Case "Test" Console.WriteLine("Сработает? Да") End Select
История
В проекте учёта инвентаря сравнивали числовые идентификаторы как строки в Select Case. При перекодировке данных часть кейсов стала не совпадать из-за другой кодировки и разницы в регистре, что привело к неверной категоризации.
История
В разработке онлайн-форумов использовали диапазон Case 1 To 10 для проверки ранга пользователя, но ошиблись в Boundary Value (граничное значение) — при status=10 секция не срабатывала из-за невнимательности при проектировании.
История
В банковском приложении пытались проверить сразу две переменных внутри одного Case (Case a > 5 And b < 3). Код компилировался с ошибкой, а переход на If...ElseIf помог выявить ошибки в логике маршрутизации операций.