TypeOf – operátor (Visual Basic)
Zkontroluje, jestli je typ modulu runtime výsledku výrazu kompatibilní se zadaným typem.
Syntaxe
result = TypeOf objectexpression Is typename
result = TypeOf objectexpression IsNot typename
Součástky
result
Vrácena. Hodnota Boolean
.
objectexpression
Povinný: Libovolný výraz, který se vyhodnotí jako typ odkazu.
typename
Povinný: Libovolný název datového typu.
Poznámky
Operátor TypeOf
určuje, zda je typ objectexpression
běhu kompatibilní s typename
. Kompatibilita závisí na kategorii typename
typu . Následující tabulka ukazuje, jak je určena kompatibilita.
Kategorie typu typename |
Kritérium kompatibility |
---|---|
Třída | objectexpression je typu typename nebo dědí z typename |
Struktura | objectexpression je typu typename |
Rozhraní | objectexpression implementuje typename nebo dědí z třídy, která implementuje typename |
Pokud typ objectexpression
běhu splňuje kritérium kompatibility, result
je True
. result
V opačném případě je False
. Pokud objectexpression
je null, vrátí TypeOf
...Is
a False
...IsNot
vrátí True
.
TypeOf
je vždy používán s klíčovým slovem Is
k vytvoření výrazu TypeOf
...Is
nebo s IsNot
klíčovým slovem k vytvoření výrazu TypeOf
...IsNot
.
Příklad
Následující příklad používá TypeOf
výrazy ...Is
k otestování kompatibility typů dvou referenčních proměnných objektů s různými datovými typy.
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)
Proměnná refInteger
má typ Integer
běhu . Je kompatibilní s Integer
, ale ne s Double
. Proměnná refForm
má typ Formběhu . Je kompatibilní s Form tím, že je jeho typ, s Control protože Form dědí z Control, a s IComponent protože Form dědí z Component, který implementuje IComponent. refForm
Není však kompatibilní s Label.