Partilhar via


Vinculação antecipada e tardia (Visual Basic)

O compilador do Visual Basic executa um processo chamado binding quando um objeto é atribuído a uma variável de objeto. Um objeto é vinculado antecipadamente quando é atribuído a uma variável declarada como sendo de um tipo de objeto específico. Os objetos vinculados antecipadamente permitem que o compilador aloque memória e execute outras otimizações antes que um aplicativo seja executado. Por exemplo, o fragmento de código a seguir declara uma variável do 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 é um tipo de objeto específico, a instância atribuída a FS é vinculada antecipadamente.

Por outro lado, um objeto é vinculado tardiamente quando é atribuído a uma variável declarada como sendo do tipo Object. Objetos desse tipo podem conter referências a qualquer objeto, mas não têm muitas das vantagens dos objetos ligados antecipadamente. Por exemplo, o fragmento de código a seguir declara uma variável de objeto para conter um objeto retornado pela CreateObject função:

' 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

Vantagens da vinculação antecipada

Você deve usar objetos de ligação antecipada sempre que possível, porque eles permitem que o compilador faça otimizações importantes que produzem aplicativos mais eficientes. Os objetos de ligação antecipada são significativamente mais rápidos do que os objetos de ligação tardia e tornam o seu código mais fácil de ler e manter, indicando exatamente que tipo de objetos estão a ser utilizados. Outra vantagem da vinculação antecipada é que ela permite recursos úteis, como autocompletar código e Ajuda dinâmica, porque o ambiente de desenvolvimento integrado (IDE) do Visual Studio pode determinar exatamente com que tipo de objeto você está trabalhando enquanto edita o código. A vinculação antecipada reduz o número e a gravidade dos erros em tempo de execução porque permite que o compilador relate erros quando um programa é compilado.

Observação

A vinculação tardia só pode ser usada para acessar membros do tipo declarados como Public. O acesso a membros declarados como Friend ou Protected Friend resulta em um erro em tempo de execução.

Ver também