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.