Enlace en tiempo de compilación y en tiempo de ejecución

Actualización: noviembre 2007

El compilador de Visual Basic lleva a cabo un proceso denominado binding cuando se asigna un objeto a una variable de objeto. Un objeto es de enlace en tiempo de compilación cuando se asigna a una variable que se declara de un tipo de objeto específico. Los objetos de enlace en tiempo de compilación permiten al compilador asignar memoria y realizar otras optimizaciones antes de que se ejecute la aplicación. Por ejemplo, en el siguiente fragmento de código se declara que una variable es 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)

Como FileStream es un tipo de objeto específico, la instancia asignada a FS es de enlace en tiempo de compilación.

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

' 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 en tiempo de compilación

Siempre que sea posible, utilice objetos de enlace en tiempo de compilación, puesto que permiten al compilador realizar importantes optimizaciones que producen aplicaciones más eficientes. Los objetos de enlace en tiempo de compilación son bastante más rápidos y también facilitan la lectura y el mantenimiento del código, ya que declaran exactamente qué clase de objetos se están utilizando. Otra ventaja del enlace en tiempo de compilación consiste en que permite el uso de funciones útiles como la finalización automática de código y la Ayuda dinámica, puesto que el entorno de desarrollo integrado (IDE) de Visual Studio puede determinar exactamente el tipo de objeto con el que se está trabajando mientras se edita el código. El enlace en tiempo de compilación reduce el número y la gravedad de los errores en tiempo de ejecución al permitir que el compilador notifique los errores cuando se compila un programa.

Nota:

El enlace en tiempo de ejecución sólo puede utilizarse para obtener acceso a miembros de tipo declarados como Public. Tener acceso a miembros declarados como Friend o Protected Friend produce un error en tiempo de ejecución.

Vea también

Conceptos

Duración de los objetos: cómo se crean y destruyen

Referencia

Object (Tipo de datos)

CreateObject (Función, Visual Basic)