Associazione anticipata e tardiva

Aggiornamento: novembre 2007

Quando un oggetto viene assegnato a una variabile oggetto, il compilatore di Visual Basic esegue un processo definito binding. Un oggetto viene associato anticipatamente quando viene assegnato a una variabile di un tipo specifico di oggetto. Gli oggetti ad associazione anticipata consentono al compilatore di allocare memoria ed eseguire altre ottimizzazioni prima dell'esecuzione di un'applicazione. Nel frammento di codice riportato di seguito, ad esempio, viene dichiarata una variabile di 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)

Poiché FileStream è un tipo di oggetto specifico, l'istanza assegnata a FS presenta un'associazione anticipata.

Al contrario, un oggetto viene associato tardivamente quando viene assegnato a una variabile dichiarata di tipo Object. Gli oggetti di questo tipo possono contenere riferimenti a qualsiasi oggetto, ma non sono in grado di offrire molti dei vantaggi degli oggetti associati anticipatamente. Nel frammento di codice che segue, ad esempio, viene dichiarata una variabile oggetto contenente un oggetto restituito dalla funzione 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

Vantaggi dell'associazione anticipata

Se possibile, si consiglia di utilizzare gli oggetti ad associazione anticipata, che consentono di effettuare ottimizzazioni rilevanti e di migliorare l'efficienza delle applicazioni. Gli oggetti associati anticipatamente sono significativamente più veloci degli oggetti associati tardivamente e facilitano la lettura e la gestione del codice dichiarando esattamente il tipo di oggetti utilizzati. L'associazione anticipata consente inoltre di attivare funzionalità utili quali il completamento automatico del codice e la Guida dinamica, poiché l'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio è in grado di determinare esattamente quali tipi di oggetto vengono utilizzati durante la modifica del codice. Grazie all'associazione anticipata è possibile ridurre il numero e la gravità degli errori in fase di esecuzione, in quanto gli errori possono essere segnalati in fase di compilazione del programma.

Nota:

È possibile utilizzare l'associazione tardiva solo per accedere a membri di tipi dichiarati come Public. L'accesso a membri dichiarati come Friend o Protected Friend determina errori di runtime.

Vedere anche

Concetti

Durata degli oggetti: come creare e distruggere oggetti

Riferimenti

Tipo di dati Object

Funzione CreateObject (Visual Basic)