Liaison anticipée et liaison tardive (Visual Basic)
Le compilateur Visual Basic effectue un processus appelé binding
lorsqu’un objet est affecté à une variable objet. Un objet est dit à liaison anticipée lorsqu’il est affecté à 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 de 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)
Étant donné que FileStream est un type d’objet spécifique, l’instance affectée à FS
est à liaison anticipée.
Par opposition, un objet est dit à liaison tardive lorsqu’il est affecté à 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 tous les avantages des objets à liaison anticipée. Par exemple, le fragment de code suivant déclare une variable objet qui contient 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
Utilisez des objets à liaison anticipée chaque fois que c’est possible, car ils permettent au compilateur d’effectuer d’importantes optimisations qui génèrent des applications plus efficaces. Les objets à liaison anticipée sont considérablement plus rapides que les objets à liaison tardive et rendent votre code plus facile à lire et à gérer en indiquant exactement quels types d’objets sont utilisés. Un autre avantage de la liaison anticipée est qu’elle permet des fonctionnalités utiles telles que la saisie semi-automatique du code et l’aide dynamique, car le Visual Studio environnement de développement intégré (IDE) peut déterminer exactement le type d’objet que vous utilisez lorsque vous modifiez le code. Elle réduit le nombre et la gravité des erreurs d’exécution, car elle permet au compilateur de signaler des erreurs à la compilation du programme.
Notes
La liaison tardive ne peut être utilisée que pour accéder aux membres de type déclarés comme Public
. L’accès aux membres déclarés comme Friend
ou Protected Friend
provoque une erreur d’exécution.