Udostępnij za pośrednictwem


Określanie typu obiektu (Visual Basic)

Zmienne obiektu ogólnego (czyli zmienne zadeklarowane jako Object) mogą przechowywać obiekty z dowolnej klasy. W przypadku używania zmiennych typu Objectmoże być konieczne podjęcie różnych akcji na podstawie klasy obiektu, na przykład niektóre obiekty mogą nie obsługiwać określonej właściwości lub metody. Język Visual Basic zapewnia dwa sposoby określania, który typ obiektu jest przechowywany w zmiennej obiektu: TypeName funkcji i TypeOf...Is operatora.

TypeName i TypeOf... Jest

Funkcja TypeName zwraca ciąg i jest najlepszym wyborem, gdy trzeba przechowywać lub wyświetlać nazwę klasy obiektu, jak pokazano w poniższym fragcie kodu:

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

Operator TypeOf...Is jest najlepszym wyborem do testowania typu obiektu, ponieważ jest znacznie szybszy niż równoważne porównanie ciągów przy użyciu polecenia TypeName. Poniższy fragment kodu używa TypeOf...Is instrukcji If...Then...Else :

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

Należy tutaj zachować ostrożność. Operator TypeOf...Is zwraca True , jeśli obiekt jest określonym typem lub pochodzi z określonego typu. Prawie wszystko, co robisz w języku Visual Basic, obejmuje obiekty, które zawierają niektóre elementy, które zwykle nie są uważane za obiekty, takie jak ciągi i liczby całkowite. Te obiekty pochodzą z metod i dziedziczą je z Objectklasy . Po przekazaniu Integer elementu i ocenie za pomocą ObjectTypeOf...Is operatora operator zwraca wartość True. Poniższy przykład zgłasza, że parametr jest zarówno parametrem InParam , jak IntegerObject i :

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

W poniższym przykładzie użyto metody TypeOf...Is i TypeName w celu określenia typu obiektu przekazanego do niego w argumencie Ctrl . Procedura TestObject wywołuje ShowType trzy różne rodzaje kontrolek.

Aby uruchomić przykład

  1. Utwórz nowy projekt aplikacji systemu Windows i dodaj kontrolkę Button , kontrolkę CheckBox i kontrolkę RadioButton do formularza.

  2. Na przycisku w formularzu wywołaj procedurę TestObject .

  3. Dodaj następujący kod do formularza:

    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
    

Zobacz też