Asignación de variables de objeto (Visual Basic)
Use una instrucción de asignación normal para asignar un objeto a una variable de objeto. Puede asignar una expresión de objeto o la palabra clave Nothing, como se ilustra en el siguiente ejemplo.
Dim thisObject As Object
' The following statement assigns an object reference.
thisObject = Form1
' The following statement discontinues association with any object.
thisObject = Nothing
Nothing
significa que no hay ningún objeto asignado actualmente a la variable.
Inicialización
Cuando el código comienza a ejecutarse, las variables de objeto se inicializan en Nothing
. Aquellas cuyas declaraciones incluyan inicialización se reinicializan en los valores especificados cuando se ejecutan las instrucciones de declaración.
Puede incluir la inicialización en la declaración mediante la palabra clave New. Las siguientes instrucciones de declaración declaran las variables de objeto testUri
y ver
y asignan objetos específicos a ellas. Cada una usa uno de los constructores sobrecargados de la clase adecuada pertinente para inicializar el objeto.
Dim testUri As New System.Uri("https://www.microsoft.com")
Dim ver As New System.Version(6, 1, 0)
Desasociación
Establecer una variable de objeto en Nothing
interrumpe la asociación de la variable con cualquier objeto específico. Esto evita alterar el objeto accidentalmente al cambiar la variable. También permite probar si la variable de objeto apunta a un objeto válido, como se muestra en el ejemplo siguiente.
If otherObject IsNot Nothing Then
' otherObject refers to a valid object, so your code can use it.
End If
Si el objeto al que hace referencia la variable está en otra aplicación, esta prueba no puede determinar si esa aplicación ha finalizado o simplemente ha invalidado el objeto.
Una variable de objeto con un valor de Nothing
también se denomina referencia nula.
Instancia actual
La instancia actual de un objeto es aquella en la que el código se está ejecutando actualmente. Puesto que todo el código se ejecuta dentro de un procedimiento, la instancia actual es aquella donde se invocó el procedimiento.
La palabra clave Me
actúa como una variable de objeto que hace referencia a la instancia actual. Si un procedimiento no es Shared, puede usar la palabra clave Me
para obtener un puntero a la instancia actual. Los procedimientos Shared no se pueden asociar a una instancia específica de una clase.
El uso de Me
es especialmente útil para pasar la instancia actual a un procedimiento en otro módulo. Por ejemplo, supongamos que tenemos una serie de documentos XML y queremos incorpora texto estándar en todos ellos. En el siguiente ejemplo se define un procedimiento para llevar esto a cabo.
Sub addStandardText(XmlDoc As System.Xml.XmlDocument)
XmlDoc.CreateTextNode("This text goes into every XML document.")
End Sub
Cada objeto de documento XML podría llamar al procedimiento y pasar su instancia actual como argumento. En el siguiente ejemplo se muestra cómo hacerlo.
addStandardText(Me)