Compartilhar via


Associaçã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 é associado inicialmente quando ele é atribuído a uma variável declarada como de um tipo de objeto específico. Os objetos associados iniciais 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 como 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)

Uma vez que FileStream é um tipo de objeto específico, a instância atribuída a FS é associada no início.

Por outro lado, um objeto é ligado tardiamente quando é atribuído a uma variável declarada como do tipo Object. Objetos desse tipo podem conter referências a qualquer objeto, mas têm muitas das vantagens de objetos de associação inicial. 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 associação inicial

Você deve usar objetos com limite inicial sempre que possível, pois eles permitem que o compilador faça otimizações importantes que produzem aplicativos mais eficientes. Objetos com limite inicial são significativamente mais rápidos do que objetos com limite tardio e facilitam a leitura e a manutenção do código informando exatamente que tipo de objetos estão sendo usados. Outra vantagem da associação inicial é que ela permite recursos úteis, como preenchimento automático de código e Ajuda Dinâmica, pois o IDE (ambiente de desenvolvimento integrado) do Visual Studio pode determinar exatamente com qual tipo de objeto você está trabalhando ao editar o código. A associação antecipada reduz o número e a gravidade de erros em tempo de execução porque permite que o compilador relate erros quando um programa é compilado.

Observação

A associação tardia só pode ser usada para acessar membros de tipo que são declarados como Public. Acessar membros declarados como Friend ou Protected Friend resulta em erro em tempo de execução.

Consulte também