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로 변경하여 작업의 라우팅 로직에서 오류를 발견할 수 있었습니다.