Compartir a través de


Object (Tipo de datos)

Actualización: noviembre 2007

Contiene direcciones de 32 bits (4 bytes) que hacen referencia s objetos. Se puede asignar cualquier tipo de referencia (cadena, matriz, clase o interfaz) a una variable Object. Una variable Object también puede hacer referencia a datos de cualquier tipo de valor (numérico, Boolean, Char, Date, estructura o enumeración).

Comentarios

El tipo de datos Object puede señalar a datos de cualquier tipo de datos, incluso cualquier instancia de objeto que su aplicación reconozca. Utilice Object cuando en tiempo de compilación no conoce a qué tipo de datos puede señalar la variable.

El valor predeterminado de Object es Nothing (una referencia nula).

Tipos de datos

Puede asignar una variable, constante o expresión de cualquier tipo de datos a una variable Object. Para determinar el tipo de datos a los que hace referencia actualmente una variable Object, puede utilizar el método GetTypeCode de la clase System.Type. Esto se ilustra en el siguiente ejemplo:

Dim myObject As Object
' Suppose myObject has now had something assigned to it.
Dim datTyp As Integer
datTyp = Type.GetTypeCode(myObject.GetType())

El tipo de datos Object es un tipo de referencia. Sin embargo, Visual Basic trata una variable Object como un tipo de valor cuando hace referencia a datos de un tipo de valor.

Almacenamiento

Independientemente del tipo de datos al que haga referencia, una variable Object no contiene el valor de datos en sí, sino un puntero al valor. Siempre utiliza cuatro bytes en la memoria del sistema, pero sin incluir el almacenamiento para los datos que representan el valor de la variable. Debido al código que el puntero utiliza para buscar los datos, las variables Object que contienen tipos de valor son de acceso un poco más lento que las variables que tienen un tipo explícito.

Sugerencias de programación

  • Consideraciones sobre interoperabilidad. Si trabaja con componentes no escritos para .NET Framework, por ejemplo objetos de automatización o COM, recuerde que los tipos de puntero de otros entornos no son compatibles con el tipo Object de Visual Basic.

  • Rendimiento. Una variable que declara con el tipo Object es bastante flexible para contener una referencia a cualquier objeto. Sin embargo, cuando invoca un método o propiedad en este tipo de variable, se produce siempre el enlace en tiempo de ejecución. Para forzar el enlace en tiempo de compilación y un mejor rendimiento, declare la variable con un nombre de clase específico o conviértala en el tipo de datos específico.

    Cuando declara una variable de objeto, intente utilizar un tipo de clase concreto, por ejemplo OperatingSystem, en lugar del tipo Object generalizado. También es preferible utilizar la clase más específica disponible, como TextBox en lugar de Control, así podrá tener acceso a sus propiedades y métodos. Normalmente puede utilizar la lista Clases del Explorador de objetos para buscar nombres de clase disponibles.

  • Ampliación. Todos los tipos de datos y todos los tipos de referencia se amplían al tipo de datos Object. Esto significa que se puede convertir cualquier tipo a Object sin encontrar un error System.OverflowException.

    Sin embargo, si convierte entre tipos de valor y Object, Visual Basic realiza unas operaciones llamadas conversión boxing y conversión unboxing, que ralentizan la ejecución.

  • **Caracteres de tipo.**Object no tiene ningún carácter de tipo de literal o de tipo de identificador.

  • Tipo de Framework. El tipo correspondiente en .NET Framework es la clase System.Object.

Ejemplo

El ejemplo siguiente ilustra una variable Object que señala a una instancia de objeto.

Dim objDb As Object
Dim myCollection As New Collection()
' Suppose myCollection has now been populated.
objDb = myCollection.Item(1)

Vea también

Tareas

Cómo: Determinar si dos objetos están relacionados

Cómo: Determinar si dos objetos son idénticos

Conceptos

Uso eficiente de tipos de datos

Object como tipo de datos universal

Referencia

Resumen de tipos de datos (Visual Basic)

Object

Funciones de conversión de tipos

Resumen de conversión