Operatore TypeOf (Visual Basic)

Verifica se il tipo di runtime del risultato di un'espressione è compatibile con il tipo specificato.

Sintassi

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

Parti

result
Restituita. Valore Boolean.

objectexpression
Obbligatorio. Qualsiasi espressione che restituisce un tipo riferimento.

typename
Obbligatorio. Qualsiasi nome di un tipo di dati.

Osservazioni:

L'operatore TypeOf determina se il tipo di objectexpression in fase di esecuzione è compatibile con typename. La compatibilità dipende dalla categoria del tipo di typename. La tabella seguente illustra come viene determinata la compatibilità.

Categoria del tipo di typename Criterio di compatibilità
Classe objectexpression è del tipo typename o eredita da typename
Struttura objectexpression è del tipo typename
Interfaccia objectexpression implementa typename o eredita da una classe che implementa typename

Se il tipo di objectexpression in fase di esecuzione soddisfa il criterio di compatibilità, result sarà True. In caso contrario, result sarà False. Se objectexpression è null, TypeOf...Is restituisce False e ...IsNot restituisce True.

TypeOf viene sempre usato con la parola chiave Is per costruire un'espressione TypeOf...Is oppure con la parola chiave IsNot per costruire un'espressione TypeOf...IsNot.

Esempio

Nell'esempio seguente le espressioni TypeOf...Is vengono usate per verificare la compatibilità dei tipi di due variabili di riferimento a un oggetto con diversi tipi di dati.

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)

La variabile refInteger presenta un tipo in fase di esecuzione Integer. È compatibile con Integer, ma non con Double. La variabile refForm presenta un tipo in fase di esecuzione Form. È compatibile con Form perché si tratta del relativo tipo, con Control perché Form eredita da Control e con IComponent perché Form eredita da Component, che implementa IComponent. refForm non è invece compatibile con Label.

Vedi anche