TypeOf (Operador, Visual Basic)

Comprueba si el tipo en tiempo de ejecución del resultado de una expresión es compatible con el tipo especificado.

Sintaxis

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

Partes

result
Devuelto. Valor Boolean.

objectexpression
Necesario. Cualquier expresión que se evalúa como un tipo de referencia.

typename
Necesario. Cualquier nombre de tipo de datos.

Comentarios

El operador TypeOf determina si el tipo en tiempo de ejecución de objectexpression es compatible con typename. La compatibilidad depende de la categoría del tipo de typename. En la tabla siguiente se muestra cómo se determina la compatibilidad.

Categoría de tipo de typename Criterio de compatibilidad
Clase objectexpression es de tipo typename o hereda de typename
Estructura objectexpression es de tipo typename
Interfaz objectexpression implementa typename o hereda de una clase que implementa typename

Si el tipo en tiempo de ejecución de objectexpression satisface el criterio de compatibilidad, result es True. En caso contrario, result es False. Si objectexpression es null, entonces TypeOf...Is devuelve False y ...IsNot devuelve True.

TypeOf siempre se usa con la palabra clave Is para construir una expresión TypeOf...Is, o con la palabra clave IsNot para construir una expresión TypeOf...IsNot.

Ejemplo

En el ejemplo siguiente se usan expresiones TypeOf...Is para probar la compatibilidad de tipo de dos variables de referencia de objeto con diversos tipos de datos.

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 variable refInteger tiene un tipo en tiempo de ejecución de Integer. Es compatible con Integer pero no con Double. La variable refForm tiene un tipo en tiempo de ejecución de Form. Es compatible con Form porque es su tipo, con Control porque Form hereda de Control, y con IComponent porque Form hereda de Component, que implementa IComponent. Sin embargo, refForm no es compatible con Label.

Consulte también