Operador TypeOf (Visual Basic)
Verifica se o tipo de runtime do resultado de uma expressão é compatível com o tipo especificado.
Sintaxe
result = TypeOf objectexpression Is typename
result = TypeOf objectexpression IsNot typename
Partes
result
Retornou. Um valor Boolean
.
objectexpression
Obrigatórios. Qualquer expressão avaliada como um tipo de referência.
typename
Obrigatórios. Qualquer nome de tipo de dados.
Comentários
O operador TypeOf
determina se o tipo de tempo de execução objectexpression
é compatível com typename
. A compatibilidade depende da categoria de tipo de typename
. A tabela a seguir mostra como a compatibilidade é determinada.
Categoria de tipo de typename |
Critério de compatibilidade |
---|---|
Classe | objectexpression é do tipo typename ou herda de typename |
Estrutura | objectexpression é do tipo typename |
Interface | objectexpression implementa typename ou herda de uma classe que implementa typename |
Se o tipo de tempo de execução de objectexpression
atender ao critério de compatibilidade, result
será True
. Caso contrário, result
é False
. Se objectexpression
for nulo, então TypeOf
...Is
retornará False
e ...IsNot
retornará True
.
TypeOf
é sempre usado com a palavra-chave Is
para construir uma expressão TypeOf
...Is
ou com a palavra-chave IsNot
para construir uma expressão TypeOf
...IsNot
.
Exemplo
O exemplo a seguir usa expressões TypeOf
...Is
para testar a compatibilidade de tipo de duas variáveis de referência de objeto com vários tipos de dados.
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)
A variável refInteger
tem um tipo de tempo de execução de Integer
. Ela é compatível com Integer
, mas não com Double
. A variável refForm
tem um tipo de tempo de execução de Form. Ela compatível com Form porque esse é o tipo dela, com Control porque Form herda de Control e com IComponent porque Form herda de Component, que implementa IComponent. No entanto, refForm
não é compatível com Label.