Object Data Type

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

Comentarios

El tipo de datos Object puede apuntar a datos de cualquier tipo de datos, incluida cualquier instancia de objeto que la aplicación reconozca. Use Object cuando no sepa en tiempo de compilación a qué tipo de datos podría apuntar la variable.

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

Tipo de datos

Puede asignar una variable, una constante o una expresión de cualquier tipo de datos a una variable Object. Para determinar el tipo de datos al que hace referencia actualmente una variable Object, puede usar 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.

Storage

Independientemente del tipo de datos al que hace referencia, una variable Object no contiene el valor de datos mismo, sino un puntero al valor. Siempre usa cuatro bytes en la memoria del equipo, pero esto no incluye el almacenamiento de los datos que representan el valor de la variable. Debido al código que usa el puntero para buscar los datos, las variables Object que contienen tipos de valor son ligeramente más lentas para acceder a las variables con tipo explícito.

Sugerencias de programación

  • Consideraciones de interoperabilidad. Si interactúa con componentes no escritos para .NET Framework, por ejemplo, objetos de Automation o COM, tenga en cuenta que los tipos de puntero definidos en otros entornos no son compatibles con el tipo Object de Visual Basic.

  • Rendimiento. Una variable que declara con el tipo Object es lo suficientemente flexible como para contener una referencia a cualquier objeto. Sin embargo, cuando invoca un método o propiedad en una variable de ese tipo, siempre da como resultado un enlace tardío (en tiempo de ejecución). Para forzar el enlace temprano (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 declare una variable de objeto, intente utilizar un tipo de clase específico, por ejemplo OperatingSystem, en lugar del tipo Object generalizado. También debe usar la clase más específica disponible, como TextBox en lugar de Control, para poder acceder a sus propiedades y métodos. Por lo general, puede usar la lista Clases en el Examinador de objetos para buscar los 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 puede convertir cualquier tipo en Object sin que se produzca un error System.OverflowException.

    Sin embargo, si realiza la conversión entre tipos de valor y Object, Visual Basic lleva a cabo operaciones denominadas boxing y unboxing, las que hacen que la ejecución sea más lenta.

  • Caracteres de tipo. Object no tiene caracteres de tipo literal ni caracteres de tipo identificador.

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

Ejemplo

En el ejemplo siguiente, se ilustra una variable Object que apunta a una instancia de objeto.

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

Consulte también