다음을 통해 공유


개체 형식 확인(Visual Basic)

Object로 선언한 변수인 제네릭 개체 변수는 클래스와 상관 없이 개체를 가지고 있을 수 있습니다. Object 형식의 변수를 사용하는 경우, 해당 개체의 클래스에 따라 각기 다른 작업이 필요할 수도 있습니다. 가령, 어떤 개체는 특정 속성이나 메서드를 지원하지 않을 수도 있습니다. Visual Basic은 TypeName 함수와 TypeOf...Is 연산자라는 두 가지 수단을 통해 개체 변수에 저장된 개체 형식을 확인할 수 있게 해 줍니다.

TypeName과 TypeOf…Is

TypeName 함수는 문자열을 반환하며, 다음의 코드 조각에서와 같이 어떤 개체의 클래스 이름을 저장하거나 표시해야 할 때 가장 적합합니다.

Dim Ctrl As Control = New TextBox
MsgBox(TypeName(Ctrl))

TypeOf...Is 연산자는 TypeName을 사용하는 동일 문자열 비교보다 훨씬 빠르기 때문에 개체 형식을 테스트하는 데 최적화되어 있습니다. 다음의 코드 조각은 If...Then...Else 문에 TypeOf...Is를 사용합니다.

If TypeOf Ctrl Is Button Then
    MsgBox("The control is a button.")
End If

주의해야 할 점이 있습니다. TypeOf...Is 연산자는 개체가 특정 형식이거나 특정 형식에서 파생된 경우 True를 반환합니다. Visual Basic에서 수행하는 거의 모든 작업에는 개체가 포함되어 있으며, 이러한 개체에는 문자열이나 정수처럼 일반적으로는 개체로 생각하지 않는 요소들도 포함되어 있습니다. 이러한 개체들은 Object에서 파생되어 메서드를 상속합니다. Integer를 전달하고 Object로 계산되는 경우, TypeOf...Is 연산자는 True를 반환합니다. 다음 예제에서는 InParam 매개 변수가 Object인 동시에 Integer라고 합니다.

Sub CheckType(ByVal InParam As Object)
    ' Both If statements evaluate to True when an
    ' Integer is passed to this procedure.
    If TypeOf InParam Is Object Then
        MsgBox("InParam is an Object")
    End If
    If TypeOf InParam Is Integer Then
        MsgBox("InParam is an Integer")
    End If
End Sub

다음 예제에서는 TypeOf...IsTypeName을 모두 사용하여 Ctrl 인수에 전달하는 개체의 형식을 확인합니다. TestObject 프로시저는 서로 다른 세 가지 종류의 컨트롤을 사용하여 ShowType을 호출합니다.

예제를 실행하려면

  1. 새 Windows 애플리케이션 프로젝트를 만들고 양식에 Button 컨트롤, CheckBox 컨트롤, RadioButton 컨트롤을 하나씩 추가합니다.

  2. 양식의 단추에서 TestObject 프로시저를 호출합니다.

  3. 양식에 다음 코드를 추가합니다.

    Sub ShowType(ByVal Ctrl As Object)
        'Use the TypeName function to display the class name as text.
        MsgBox(TypeName(Ctrl))
        'Use the TypeOf function to determine the object's type.
        If TypeOf Ctrl Is Button Then
            MsgBox("The control is a button.")
        ElseIf TypeOf Ctrl Is CheckBox Then
            MsgBox("The control is a check box.")
        Else
            MsgBox("The object is some other type of control.")
        End If
    End Sub
    
    Protected Sub TestObject()
        'Test the ShowType procedure with three kinds of objects.
        ShowType(Me.Button1)
        ShowType(Me.CheckBox1)
        ShowType(Me.RadioButton1)
    End Sub
    

참고 항목