다음을 통해 공유


개체 형식 결정(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것보다 훨씬 빠르기 때문입니다. 다음 코드 조각은 TypeOf...Is 문장 내에서 If...Then...Else을(를) 사용합니다.

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을 반환합니다. 다음 예제에서는 매개 변수 InParamObjectInteger로 보고됩니다.

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
    

참고하십시오