Associazione anticipata e tardiva (Visual Basic)Early and Late Binding (Visual Basic)

Il compilatore Visual Basic esegue un processo denominato binding quando un oggetto viene assegnato a una variabile oggetto.The Visual Basic compiler performs a process called binding when an object is assigned to an object variable. Un oggetto è ad associazione anticipata quando viene assegnato a una variabile di un tipo object specifico.An object is early bound when it is assigned to a variable declared to be of a specific object type. Gli oggetti ad associazione anticipata consentono al compilatore di allocare memoria ed effettuare altre ottimizzazioni prima dell'esecuzione di un'applicazione.Early bound objects allow the compiler to allocate memory and perform other optimizations before an application executes. Il frammento di codice seguente, ad esempio, dichiara una variabile di tipo FileStream:For example, the following code fragment declares a variable to be of type 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)

Poiché FileStream è un tipo object specifico, l'istanza assegnata a FS è ad associazione anticipata.Because FileStream is a specific object type, the instance assigned to FS is early bound.

Al contrario, un oggetto è ad associazione tardiva quando viene assegnato a una variabile dichiarata di tipo Object.By contrast, an object is late bound when it is assigned to a variable declared to be of type Object. Gli oggetti di questo tipo possono contenere riferimenti a qualsiasi oggetto, ma non presentano molti dei vantaggi offerti dagli oggetti ad associazione anticipata.Objects of this type can hold references to any object, but lack many of the advantages of early-bound objects. Il frammento di codice seguente, ad esempio, dichiara una variabile oggetto contenente un oggetto restituito dalla funzione CreateObject:For example, the following code fragment declares an object variable to hold an object returned by the CreateObject function:

' 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

Vantaggi offerti dall'associazione anticipataAdvantages of Early Binding

Quando possibile, è consigliabile usare oggetti ad associazione anticipata. Tali oggetti consentono infatti al compilatore di eseguire ottimizzazioni significative che aumentano l'efficienza delle applicazioni.You should use early-bound objects whenever possible, because they allow the compiler to make important optimizations that yield more efficient applications. Gli oggetti ad associazione anticipata sono notevolmente più veloci di quelli ad associazione tardiva e facilitano la lettura e la gestione del codice dichiarando esattamente il tipo degli oggetti usati.Early-bound objects are significantly faster than late-bound objects and make your code easier to read and maintain by stating exactly what kind of objects are being used. Un altro vantaggio dall'associazione anticipata è che consente la funzionalità utili, ad esempio il completamento del codice automatica e la Guida dinamica perché l'ambiente di sviluppo integrato (IDE) di Visual Studio è possibile determinare esattamente quale tipo di oggetto vengono utilizzati durante la modifica di codice.Another advantage to early binding is that it enables useful features such as automatic code completion and Dynamic Help because the Visual Studio integrated development environment (IDE) can determine exactly what type of object you are working with as you edit the code. L'associazione anticipata riduce il numero e la gravità degli errori di run-time poiché consente al compilatore di segnalare gli errori al momento della compilazione di un programma.Early binding reduces the number and severity of run-time errors because it allows the compiler to report errors when a program is compiled.

Nota

L'associazione tardiva può essere usata soltanto per accedere ai membri di tipi che vengono dichiarati come Public.Late binding can only be used to access type members that are declared as Public. L'accesso a membri dichiarati come Friend o Protected Friend determina un errore di run-time.Accessing members declared as Friend or Protected Friend results in a run-time error.

Vedere ancheSee also