Condividi tramite


Associazione anticipata e tardiva (Visual Basic)

Il compilatore Visual Basic esegue un processo chiamato binding quando un oggetto viene assegnato a una variabile oggetto. Un oggetto è legato staticamente quando viene assegnato a una variabile dichiarata come di un tipo di oggetto specifico. Gli oggetti con associazione anticipata consentono al compilatore di allocare memoria ed eseguire altre ottimizzazioni prima dell'esecuzione di un'applicazione. Ad esempio, il frammento di codice seguente dichiara 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 è definita in anticipo.

Al contrario, un oggetto è legato tardivamente quando viene assegnato a una variabile dichiarata come di tipo Object. Gli oggetti di questo tipo possono contenere riferimenti a qualsiasi oggetto, ma non offrono molti dei vantaggi degli oggetti a legame anticipato. Ad esempio, il frammento di codice seguente dichiara una variabile oggetto per contenere un oggetto restituito dalla CreateObject funzione :

' 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

È consigliabile usare oggetti con associazione anticipata quando possibile, perché consentono al compilatore di eseguire ottimizzazioni importanti che producono applicazioni più efficienti. Gli oggetti con associazione anticipata sono notevolmente più veloci rispetto agli oggetti con associazione tardiva e semplificano la lettura e la gestione del codice specificando esattamente il tipo di oggetti in uso. Un altro vantaggio dell'associazione anticipata consiste nel fatto che consente funzionalità utili, ad esempio il completamento automatico del codice e la Guida dinamica, perché l'ambiente di sviluppo integrato (IDE) di Visual Studio può determinare esattamente il tipo di oggetto usato durante la modifica del codice. L'associazione anticipata riduce il numero e la gravità degli errori di runtime perché consente al compilatore di segnalare gli errori durante la compilazione di un programma.

Annotazioni

L'associazione tardiva può essere utilizzata solo per accedere ai membri del tipo dichiarati come Public. L'accesso ai membri dichiarati come Friend o Protected Friend genera un errore di runtime.

Vedere anche