Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las variables de objeto genéricas (es decir, las variables que se declaran como Object
) pueden contener objetos de cualquier clase. Al usar variables de tipo Object
, es posible que tenga que realizar diferentes acciones en función de la clase del objeto; por ejemplo, es posible que algunos objetos no admitan una propiedad o un método concretos. Visual Basic proporciona dos medios para determinar qué tipo de objeto se almacena en una variable de objeto: la TypeName
función y el TypeOf...Is
operador .
TypeName y TypeOf…Is
La TypeName
función devuelve una cadena y es la mejor opción cuando necesita almacenar o mostrar el nombre de clase de un objeto, como se muestra en el siguiente fragmento de código:
Dim Ctrl As Control = New TextBox
MsgBox(TypeName(Ctrl))
El TypeOf...Is
operador es la mejor opción para probar el tipo de un objeto, ya que es mucho más rápido que una comparación de cadenas equivalente mediante TypeName
. El fragmento de código siguiente usa TypeOf...Is
dentro de una If...Then...Else
instrucción :
If TypeOf Ctrl Is Button Then
MsgBox("The control is a button.")
End If
Es necesario advertir aquí. El TypeOf...Is
operador devuelve True
si un objeto es de un tipo específico o se deriva de un tipo específico. Casi todo lo que hace con Visual Basic implica objetos, que incluyen algunos elementos que normalmente no se piensan como objetos, como cadenas e enteros. Estos objetos se derivan de y heredan métodos de Object. Cuando se pasa Integer
y se evalúa con Object
, el TypeOf...Is
operador devuelve True
. En el ejemplo siguiente se informa de que el parámetro InParam
es tanto Object
como Integer
.
Sub CheckType(ByVal InParam As Object)
' Both If statements evaluate to True when an
' Integer is passed to this procedure.
If TypeOf InParam Is Object Then
MsgBox("InParam is an Object")
End If
If TypeOf InParam Is Integer Then
MsgBox("InParam is an Integer")
End If
End Sub
En el ejemplo siguiente se utilizan TypeOf...Is
y TypeName
para determinar el tipo de objeto que se le pasa en el argumento Ctrl
. El TestObject
procedimiento llama a ShowType
con tres diferentes tipos de controles.
Para ejecutar el ejemplo
Cree un nuevo proyecto de aplicación de Windows y agregue un Button control, un CheckBox control y un RadioButton control al formulario.
Desde el botón del formulario, llame al procedimiento
TestObject
.Agregue el código siguiente al formulario:
Sub ShowType(ByVal Ctrl As Object) 'Use the TypeName function to display the class name as text. MsgBox(TypeName(Ctrl)) 'Use the TypeOf function to determine the object's type. If TypeOf Ctrl Is Button Then MsgBox("The control is a button.") ElseIf TypeOf Ctrl Is CheckBox Then MsgBox("The control is a check box.") Else MsgBox("The object is some other type of control.") End If End Sub Protected Sub TestObject() 'Test the ShowType procedure with three kinds of objects. ShowType(Me.Button1) ShowType(Me.CheckBox1) ShowType(Me.RadioButton1) End Sub