Compartir a través de


Enlace en tiempo de compilación y en tiempo de ejecución (Visual Basic)

El compilador de Visual Basic realiza un proceso llamado binding cuando se asigna un objeto a una variable de objeto. Un objeto se enlaza de manera anticipada cuando se asigna a una variable que se declara de un tipo de objeto específico. Los objetos enlazados anticipados permiten al compilador asignar memoria y realizar otras optimizaciones antes de que se ejecute una aplicación. Por ejemplo, el fragmento de código siguiente declara una variable de tipo FileStream:

'  Create a variable to hold a new object.
Dim FS As System.IO.FileStream
' Assign a new object to the variable.
FS = New System.IO.FileStream("C:\tmp.txt",
    System.IO.FileMode.Open)

Dado que FileStream es un tipo de objeto específico, la instancia asignada a FS está enlazada al principio.

Por el contrario, un objeto se enlaza en tiempo de ejecución cuando se asigna a una variable que se declara como variable de tipo Object. Los objetos de este tipo pueden contener referencias a cualquier objeto, pero carecen de muchas de las ventajas de los objetos con enlaces anticipados. Por ejemplo, el fragmento de código siguiente declara una variable de objeto que contiene un objeto devuelto por la CreateObject función :

' To use this example, you must have Microsoft Excel installed on your computer.
' Compile with Option Strict Off to allow late binding.
Sub TestLateBinding()
    Dim xlApp As Object
    Dim xlBook As Object
    Dim xlSheet As Object
    xlApp = CreateObject("Excel.Application")
    ' Late bind an instance of an Excel workbook.
    xlBook = xlApp.Workbooks.Add
    ' Late bind an instance of an Excel worksheet.
    xlSheet = xlBook.Worksheets(1)
    xlSheet.Activate()
    ' Show the application.
    xlSheet.Application.Visible = True
    ' Place some text in the second row of the sheet.
    xlSheet.Cells(2, 2) = "This is column B row 2"
End Sub

Ventajas del enlace anticipado

Debe utilizar objetos con enlace anticipado siempre que sea posible, ya que permiten al compilador realizar importantes optimizaciones que producen aplicaciones más eficientes. Los objetos con enlace anticipado son considerablemente más rápidos que los objetos con enlace en tiempo de ejecución y permiten que el código sea más fácil de leer y mantener, ya que declaran exactamente qué clase de objetos se están utilizando. Otra ventaja para el enlace anticipado es que permite características útiles, como la finalización automática de código y la Ayuda dinámica, ya que el entorno de desarrollo integrado (IDE) de Visual Studio puede determinar exactamente con qué tipo de objeto está trabajando mientras edita el código. El enlace anticipado reduce el número y la gravedad de los errores en tiempo de ejecución porque permite al compilador notificar errores cuando se compila un programa.

Nota:

El enlace en tiempo de ejecución solo puede utilizarse para acceder a miembros de tipo declarados como Public. El acceso a los miembros declarados como Friend o Protected Friend resulta en un error en tiempo de ejecución.

Consulte también