Select...Case 문(Visual Basic)

식의 값에 따라 여러 문 그룹 중 하나를 실행합니다.

구문

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

부분

용어 정의
testexpression 필수입니다. 식 기본 데이터 형식(Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, UShort) 중 하나로 평가해야 합니다.
expressionlist Case 문에 필요합니다. testexpression에 대한 일치 값을 나타내는 식 절 목록입니다. 여러 개의 식 절은 쉼표로 구분됩니다. 각 절은 다음 형식 중 하나를 사용할 수 있습니다.

- expression1Toexpression2
- [ Is ] comparisonoperatorexpression
- expression

To 키워드를 사용하여 testexpression에 대한 일치 값 범위의 경계를 지정합니다. expression1의 값은 expression2의 값보다 작거나 같아야 합니다.

testexpression의 일치 값에 대한 제한을 지정하려면 비교 연산자(=, <>, <, <=, > 또는 >=)와 함께 Is 키워드를 사용하세요. Is 키워드가 제공되지 않으면 자동으로 comparisonoperator 앞에 삽입됩니다.

expression만 지정하는 형식은 comparisonoperator가 등호(=)인 Is 형식의 특수한 경우로 처리됩니다. 이 형식은 testexpression = expression으로 평가됩니다.

expressionlist의 식은 암시적으로 testexpression 형식으로 변환 가능하고 적절한 comparisonoperator가 함께 사용되는 두 형식에 대해 유효한 경우 어떤 데이터 형식이든 될 수 있습니다.
statements 선택 사항. testexpressionexpressionlist의 절과 일치하는 경우 실행되는 Case 다음에 오는 하나 이상의 문입니다.
elsestatements 선택 사항. testexpressionCase 문의 expressionlist에 있는 절과 일치하지 않는 경우 실행되는 Case Else 다음에 오는 하나 이상의 문입니다.
End Select Select...Case 구성의 정의를 종료합니다.

설명

testexpressionCaseexpressionlist 절과 일치하는 경우 해당 Case 문 뒤의 문은 다음 Case, Case Else 또는 End Select 문까지 실행됩니다. 그런 다음 제어는 End Select 다음의 문으로 전달됩니다. testexpression이 둘 이상의 Case 절에서 expressionlist 절과 일치하는 경우 처음 일치 다음의 문만 실행됩니다.

Case Else 문은 다른 Case 문의 testexpressionexpressionlist 절 사이에 일치가 없을 경우 실행할 elsestatements를 도입하는 데 사용됩니다. 필수는 아니지만 예상치 못한 testexpression 값을 처리하기 위해 Select Case 구성에 Case Else 문을 포함하는 것이 좋습니다. testexpression과 일치하는 Caseexpressionlist 절이 없고 Case Else 문이 없으면 제어는 End Select 다음 문으로 전달됩니다.

Case 절에서 여러 식 또는 범위를 사용할 수 있습니다. 예를 들어 다음 줄을 사용할 수 있습니다.

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

참고 항목

CaseCase Else 문에 사용되는 Is 키워드는 개체 참조 비교에 사용되는 Is 연산자와 동일하지 않습니다.

문자열에 대해 범위 및 여러 식을 지정할 수 있습니다. 다음 예에서 Case는 "apples"와 정확히 같거나, 알파벳순으로 "nuts"와 "soup" 사이의 값이 있거나, testItem의 현재 값과 정확히 동일한 값을 포함하는 모든 문자열과 일치합니다.

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

Option Compare의 설정은 문자열 비교에 영향을 줄 수 있습니다. Option Compare Text에서 문자열 "Apples"와 "apples"는 동일하게 비교되지만 Option Compare Binary에서는 그렇지 않습니다.

참고 항목

여러 절이 있는 Case 문은 단락이라고 하는 동작을 보일 수 있습니다. Visual Basic은 왼쪽에서 오른쪽으로 절을 평가하며, testexpression과 일치하는 항목이 생성되면 나머지 절은 평가되지 않습니다. 단락으로 인해 성능이 향상될 수 있지만 expressionlist의 모든 식이 평가되어야 하는 경우 예상치 못한 결과가 발생할 수 있습니다. 단락에 대한 자세한 내용은 부울 식을 참조하세요.

Case 또는 Case Else 문 블록 내의 코드가 블록의 문을 더 이상 실행할 필요가 없는 경우 Exit Select 문을 사용하여 블록을 종료할 수 있습니다. 그러면 End Select 다음의 문으로 제어가 즉시 전달됩니다.

Select Case 구성은 중첩될 수 있습니다. 중첩된 각 Select Case 구성에는 일치하는 End Select 문이 있어야 하며 중첩된 외부 Select Case 구성의 단일 Case 또는 Case Else 문 블록 내에 완전히 포함되어야 합니다.

예시

다음 예에서는 Select Case 구성을 사용하여 변수 number 값에 해당하는 줄을 작성합니다. 두 번째 Case 문에 number의 현재 값과 일치하는 값이 포함되어 있으므로 "Between 6 and 8, inclusive"라고 쓰인 문이 실행됩니다.

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

참고 항목