Condividi tramite


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
Ritornato. Valore Boolean.

objectexpression
Obbligatorio. Qualsiasi espressione che restituisce un tipo riferimento.

typename
Obbligatorio. Qualsiasi nome del tipo di dati.

Osservazioni:

L'operatore TypeOf determina se il tipo di runtime di objectexpression è compatibile con typename. La compatibilità dipende dalla categoria di tipi di typename. Nella tabella seguente viene illustrato come viene determinata la compatibilità.

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

Se il tipo di runtime di soddisfa il criterio di objectexpression compatibilità, result è True. In caso contrario, result sarà False. Se objectexpression è null, ... TypeOfIs restituisce Falsee ...IsNot restituisce True.

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

Esempio

Nell'esempio seguente vengono TypeOfutilizzate espressioni ...Is per testare la compatibilità dei tipi di due variabili di riferimento a oggetti con vari 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 ha un tipo di runtime di Integer. È compatibile con Integer ma non con Double. La variabile refForm ha un tipo di runtime di Form. È compatibile con Form perché è il tipo , con Control perché Form eredita da Controle perché IComponentForm eredita da Component, che implementa IComponent. Tuttavia, refForm non è compatibile con Label.

Vedere anche