TypeOf-Operator (Visual Basic)

Überprüft, ob der Laufzeittyp des Ergebnisses eines Ausdrucks mit dem angegebenen Typ typkompatibel ist.

Syntax

result = TypeOf objectexpression Is typename  
result = TypeOf objectexpression IsNot typename  

Bestandteile

result
Wird zurückgegeben. Ein Boolean-Wert.

objectexpression
Erforderlich. Jeder Ausdruck, der als ein Verweistyp ausgewertet wird.

typename
Erforderlich. Ein beliebiger Datentypname.

Bemerkungen

Der TypeOf-Operator bestimmt, ob der Laufzeittyp von objectexpression mit typename kompatibel ist. Die Kompatibilität hängt von der Typkategorie von typename ab. Die folgende Tabelle zeigt, wie die Kompatibilität bestimmt wird.

Typkategorie von typename Kompatibilitätskriterium
Klasse objectexpression ist vom Typ typename oder erbt von typename
Struktur objectexpression ist vom Typ typename
Schnittstelle objectexpression implementiert typename oder erbt von einer Klasse, die typename implementiert

Wenn der Laufzeittyp von objectexpression das Kompatibilitätskriterium erfüllt, ist resultTrue. Andernfalls lautet resultFalse. Wenn objectexpression null ist, dann gibt TypeOf...IsFalse zurück, und ...IsNot gibt True zurück.

TypeOf wird immer mit dem Schlüsselwort Is verwendet, um einen TypeOf...Is-Ausdruck zu erstellen, oder mit dem Schlüsselwort IsNot, um einen TypeOf...IsNot-Ausdruck zu erstellen.

Beispiel

Im folgenden Beispiel werden TypeOf...Is-Ausdrücke zum Testen der Typkompatibilität von zwei Objektverweisvariablen mit verschiedenen Datentypen verwendet.

Dim refInteger As Object = 2
MsgBox("TypeOf Object[Integer] Is Integer? " & TypeOf refInteger Is Integer)
MsgBox("TypeOf Object[Integer] Is Double? " & TypeOf refInteger Is Double)
Dim refForm As Object = New System.Windows.Forms.Form
MsgBox("TypeOf Object[Form] Is Form? " & TypeOf refForm Is System.Windows.Forms.Form)
MsgBox("TypeOf Object[Form] Is Label? " & TypeOf refForm Is System.Windows.Forms.Label)
MsgBox("TypeOf Object[Form] Is Control? " & TypeOf refForm Is System.Windows.Forms.Control)
MsgBox("TypeOf Object[Form] Is IComponent? " & TypeOf refForm Is System.ComponentModel.IComponent)

Die Variable refInteger verfügt über einen Laufzeittyp von Integer. Sie ist mit Integer, jedoch nicht mit Double kompatibel. Die Variable refForm verfügt über einen Laufzeittyp von Form. Sie ist mit Form kompatibel, da es sich hierbei um ihren Typ handelt, sowie mit Control, da Form von Control erbt, und mit IComponent, da Form von Component erbt, welche wiederum IComponent implementiert. refForm ist jedoch mit Label nicht kompatibel.

Siehe auch