Liaison anticipée et liaison tardive (Visual Basic)

Le compilateur Visual Basic exécute un processus appelé binding lorsqu'un objet est assigné à une variable objet. Un objet est à liaison anticipée (early binding) lorsqu'il est assigné à une variable déclarée comme étant d'un type d'objet spécifique. Les objets à liaison anticipée permettent au compilateur d'allouer de la mémoire et d'effectuer d'autres optimisations avant l'exécution d'une application. Par exemple, le fragment de code suivant déclare une variable comme étant du 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)

FileStream étant un type d'objet spécifique, l'instance assignée à FS fait l'objet d'une liaison anticipée.

Par opposition, un objet est à liaison tardive (late binding) lorsque cet objet est assigné à une variable déclarée comme étant du type Object. Les objets de ce type peuvent contenir des références à n'importe quel objet, mais ne présentent pas nombre des avantages des objets à liaison anticipée. Par exemple, le fragment de code suivant déclare une variable objet qui doit contenir un objet retourné par la fonction 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

Avantages de la liaison anticipée

Vous devez utiliser des objets à liaison anticipée chaque fois que cela est possible, car ils permettent au compilateur d'effectuer d'importantes optimisations, avec pour résultat des applications plus efficaces. Ils sont beaucoup plus rapides que les objets à liaison tardive et facilitent la lecture et la gestion du code en indiquant avec exactitude les types d'objets utilisés. La liaison anticipée présente également l'avantage d'activer des fonctionnalités utiles, telles que la saisie semi-automatique du code et l'Aide dynamique, car l'environnement de développement intégré (IDE, Integrated Development Environment) Visual Studio peut déterminer avec précision le type d'objet utilisé lorsque vous modifiez le code. Elle réduit le nombre et la gravité des erreurs d'exécution en permettant au compilateur de signaler les erreurs lors de la compilation d'un programme.

Notes

La liaison tardive peut seulement être utilisée pour accéder à des membres de type déclarés comme Public. L'accès à des membres déclarés comme Friend ou Protected Friend provoque une erreur d'exécution.

Voir aussi

Référence

Object, type de données

CreateObject

Concepts

Durée de vie d'un objet : création et destruction des objets (Visual Basic)