Freigeben über


Bestimmen des Objekttyps (Visual Basic)

Generische Objektvariablen (d. h. Variablen, die Sie deklarieren Object) können Objekte aus einer beliebigen Klasse enthalten. Bei Verwendung von Variablen vom Typ Objectmüssen Sie möglicherweise unterschiedliche Aktionen basierend auf der Klasse des Objekts ausführen, z. B. einige Objekte unterstützen möglicherweise keine bestimmte Eigenschaft oder Methode. Visual Basic bietet zwei Möglichkeiten, zu bestimmen, welcher Objekttyp in einer Objektvariable gespeichert ist: die TypeName Funktion und der TypeOf...Is Operator.

TypeName und TypeOf... Ist

Die TypeName Funktion gibt eine Zeichenfolge zurück und ist die beste Wahl, wenn Sie den Klassennamen eines Objekts speichern oder anzeigen müssen, wie im folgenden Codefragment gezeigt:

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

Der TypeOf...Is Operator ist die beste Wahl zum Testen des Typs eines Objekts, da er viel schneller als TypeName bei einem äquivalenten Zeichenfolgenvergleich ist. Das folgende Codefragment verwendet TypeOf...Is innerhalb einer If...Then...Else Anweisung:

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

Ein Wort der Vorsicht ist hier angebracht. Der TypeOf...Is Operator gibt zurück True , ob ein Objekt einen bestimmten Typ aufweist oder von einem bestimmten Typ abgeleitet wird. Fast alles, was Sie mit Visual Basic tun, umfasst Objekte, die einige Elemente enthalten, die normalerweise nicht als Objekte betrachtet werden, z. B. Zeichenfolgen und ganze Zahlen. Diese Objekte werden von Object abgeleitet und erben Methoden von Object. Wenn ein Integer übergeben und mit Object ausgewertet wird, gibt der TypeOf...Is-Operator True zurück. Im folgenden Beispiel wird gemeldet, dass der Parameter InParam sowohl ein Object als auch ein Integer ist.

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

Im folgenden Beispiel wird sowohl TypeOf...Is als auch TypeName verwendet, um den Typ des Objekts zu bestimmen, das im Ctrl-Argument übergeben wird. Die TestObject-Prozedur ruft ShowType mit drei verschiedenen Arten von Steuerelementen auf.

So führen Sie das Beispiel aus

  1. Erstellen Sie ein neues Windows-Anwendungsprojekt, und fügen Sie dem Formular ein Button Steuerelement, ein CheckBox Steuerelement und ein RadioButton Steuerelement hinzu.

  2. Rufen Sie die Prozedur über die TestObject Schaltfläche des Formulars auf.

  3. Fügen Sie ihrem Formular den folgenden Code hinzu:

    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
    

Siehe auch