Select...Case 문(Visual Basic)Select...Case Statement (Visual Basic)

식의 값에 따라 여러 문 그룹 중 하나를 실행 합니다.Runs one of several groups of statements, depending on the value of an expression.

구문Syntax

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

요소Parts

용어Term 정의Definition
testexpression 필수 요소.Required. 식.Expression. 는 기본 데이터 형식 (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger) 중 하나로 계산 되어야 합니다.ULong``UShortMust evaluate to one of the elementary data types (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, and UShort).
expressionlist Case 문에 필요 합니다.Required in a Case statement. testexpression에 대해 일치 하는 값을 나타내는 식 절의 목록입니다.List of expression clauses representing match values for testexpression. 여러 식 절은 쉼표로 구분 됩니다.Multiple expression clauses are separated by commas. 각 절은 다음 형식 중 하나를 사용할 수 있습니다.Each clause can take one of the following forms:

- expression1 To 식 2- expression1 To expression2
-[Is] comparisonoperator.equals - [ Is ] comparisonoperator expression
- - expression

To 키워드를 사용 하 여 testexpression에 대 한 일치 값 범위의 경계를 지정 합니다.Use the To keyword to specify the boundaries of a range of match values for testexpression. expression1 값은 expression2값 보다 작거나 같아야 합니다.The value of expression1 must be less than or equal to the value of expression2.

비교 연산자 (=, <>, <, <=, >또는 >=)와 함께 Is 키워드를 사용 하 여 testexpression에 대 한 일치 값에 대 한 제한을 지정 합니다.Use the Is keyword with a comparison operator (=, <>, <, <=, >, or >=) to specify a restriction on the match values for testexpression. Is 키워드를 제공 하지 않으면 comparisonoperator.equals앞에 자동으로 삽입 됩니다.If the Is keyword is not supplied, it is automatically inserted before comparisonoperator.

expression만 지정 하는 양식은 Is 형식의 특수 한 경우로 처리 됩니다. 여기서 comparisonoperator.equals 는 등호 (=)입니다.The form specifying only expression is treated as a special case of the Is form where comparisonoperator is the equal sign (=). 이 양식은 expression = testexpression으로 평가 됩니다.This form is evaluated as testexpression = expression.

expressionlist의 식은 모든 데이터 형식일 수 있습니다 .이 경우에는 testexpression 형식으로 암시적으로 변환할 수 있고 적절 한 comparisonoperator는 사용 되는 두 형식에 유효 합니다.The expressions in expressionlist can be of any data type, provided they are implicitly convertible to the type of testexpression and the appropriate comparisonoperator is valid for the two types it is being used with.
statements 선택 사항입니다.Optional. testexpression에서 expressionlist절과 일치 하는 경우 실행 되는 Case 다음 문이 하나 이상 있습니다.One or more statements following Case that run if testexpression matches any clause in expressionlist.
elsestatements 선택 사항입니다.Optional. testexpression Case Else 뒤에 나오는 하나 이상의 문은 Case 문의 expressionlist에 있는 절과 일치 하지 않는 경우에 실행 됩니다.One or more statements following Case Else that run if testexpression does not match any clause in the expressionlist of any of the Case statements.
End Select Select...Case 생성의 정의를 종료 합니다.Terminates the definition of the Select...Case construction.

설명Remarks

testexpression Case expressionlist 절과 일치 하는 경우 해당 Case 문을 따라 오는 문은 다음 Case, Case Else또는 End Select 문으로 실행 됩니다.If testexpression matches any Case expressionlist clause, the statements following that Case statement run up to the next Case, Case Else, or End Select statement. 그런 다음 End Select다음 문으로 제어가 전달 됩니다.Control then passes to the statement following End Select. testexpression 둘 이상의 Case 절에서 expressionlist 절과 일치 하는 경우 첫 번째 일치 항목 다음에 오는 문만 실행 됩니다.If testexpression matches an expressionlist clause in more than one Case clause, only the statements following the first match run.

Case Else 문은 다른 Case 문의 testexpressionexpressionlist 절 사이에 일치 하는 항목이 없는 경우 실행할 elsestatements를 소개 하는 데 사용 됩니다.The Case Else statement is used to introduce the elsestatements to run if no match is found between the testexpression and an expressionlist clause in any of the other Case statements. 필수는 아니지만 Select Case 생성에 Case Else 문을 생성 하 여 예측할 수 없는 testexpression 값을 처리 하는 것이 좋습니다.Although not required, it is a good idea to have a Case Else statement in your Select Case construction to handle unforeseen testexpression values. testexpression와 일치 하는 Case expressionlist 절이 없는 경우 Case Else 문이 없으면 End Select다음 문으로 제어가 전달 됩니다.If no Case expressionlist clause matches testexpression and there is no Case Else statement, control passes to the statement following End Select.

Case 절에서 여러 식이나 범위를 사용할 수 있습니다.You can use multiple expressions or ranges in each Case clause. 예를 들어 다음 줄은 유효 합니다.For example, the following line is valid.

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

참고

CaseCase Else 문에 사용 되는 Is 키워드는 개체 참조 비교에 사용 되는 Is 연산자와 동일 하지 않습니다.The Is keyword used in the Case and Case Else statements is not the same as the Is Operator, which is used for object reference comparison.

문자 문자열에 대해 범위와 여러 식을 지정할 수 있습니다.You can specify ranges and multiple expressions for character strings. 다음 예에서는 "사과"와 정확 하 게 일치 하는 문자열을 Case 하 고, "너트"와 "수프" 사이의 값을 알파벳 순서로 포함 하거나, testItem의 현재 값과 정확히 같은 값을 포함 합니다.In the following example, Case matches any string that is exactly equal to "apples", has a value between "nuts" and "soup" in alphabetical order, or contains the exact same value as the current value of testItem.

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

Option Compare 설정은 문자열 비교에 영향을 줄 수 있습니다.The setting of Option Compare can affect string comparisons. Option Compare Text에서 "사과" 및 "사과" 문자열은 동일 하 게 비교 되지만 Option Compare Binary는 그렇지 않습니다.Under Option Compare Text, the strings "Apples" and "apples" compare as equal, but under Option Compare Binary, they do not.

참고

여러 절이 있는 Case 문은 단락 이라는동작을 나타낼 수 있습니다.A Case statement with multiple clauses can exhibit behavior known as short-circuiting. Visual Basic는 절을 왼쪽에서 오른쪽으로 계산 하 고, testexpression와 일치 하는 항목을 생성 하는 경우 나머지 절은 계산 되지 않습니다.Visual Basic evaluates the clauses from left to right, and if one produces a match with testexpression, the remaining clauses are not evaluated. 단기는 성능을 향상 시킬 수 있지만 expressionlist의 모든 식이 계산 될 것으로 예상 되는 경우 예기치 않은 결과를 생성할 수 있습니다.Short-circuiting can improve performance, but it can produce unexpected results if you are expecting every expression in expressionlist to be evaluated. 단락에 대 한 자세한 내용은 부울 식을 참조 하세요.For more information on short-circuiting, see Boolean Expressions.

Case 또는 Case Else 문 블록 내의 코드에서 블록의 문을 더 이상 실행할 필요가 없는 경우 Exit Select 문을 사용 하 여 블록을 종료할 수 있습니다.If the code within a Case or Case Else statement block does not need to run any more of the statements in the block, it can exit the block by using the Exit Select statement. 그러면 End Select다음에 오는 문으로 제어가 즉시 전송 됩니다.This transfers control immediately to the statement following End Select.

Select Case 구문은 중첩 될 수 있습니다.Select Case constructions can be nested. 중첩 된 각 Select Case 구문은 일치 하는 End Select 문을 포함 해야 하며 중첩 된 외부 Select Case 생성의 단일 Case 또는 Case Else 문 블록 내에 완전히 포함 되어야 합니다.Each nested Select Case construction must have a matching End Select statement and must be completely contained within a single Case or Case Else statement block of the outer Select Case construction within which it is nested.

예제Example

다음 예에서는 Select Case 생성을 사용 하 여 number변수 값에 해당 하는 줄을 작성 합니다.The following example uses a Select Case construction to write a line corresponding to the value of the variable number. 두 번째 Case 문에는 number의 현재 값과 일치 하는 값이 포함 되어 있으므로 "Between 6 ~ 8" (포함)를 쓰는 문이 실행 됩니다.The second Case statement contains the value that matches the current value of number, so the statement that writes "Between 6 and 8, inclusive" runs.

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

참고자료See also