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.