Tidig och sen bindning (Visual Basic)

Visual Basic-kompilatorn utför en process som anropas binding när ett objekt tilldelas till en objektvariabel. Ett objekt binds tidigt när det tilldelas till en variabel som deklarerats vara av en viss objekttyp. Med tidigt bundna objekt kan kompilatorn allokera minne och utföra andra optimeringar innan ett program körs. Följande kodfragment deklarerar till exempel att en variabel är av typen 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)

Eftersom FileStream är en specifik objekttyp är den instans som tilldelats till FS tidig bindning.

Ett objekt är däremot sent bundet när det tilldelas till en variabel som deklarerats vara av typen Object. Objekt av den här typen kan innehålla referenser till alla objekt, men saknar många av fördelarna med tidiga bundna objekt. Följande kodfragment deklarerar till exempel en objektvariabel som ska innehålla ett objekt som returneras av CreateObject funktionen:

' 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

Fördelar med tidig bindning

Du bör använda tidigt bundna objekt när det är möjligt, eftersom de gör det möjligt för kompilatorn att göra viktiga optimeringar som ger effektivare program. Tidigt bundna objekt är betydligt snabbare än objekt med sen bindning och gör koden enklare att läsa och underhålla genom att ange exakt vilken typ av objekt som används. En annan fördel med tidig bindning är att den möjliggör användbara funktioner som automatisk kodkomplettering och dynamisk hjälp eftersom Visual Studio IDE (Integrated Development Environment) kan avgöra exakt vilken typ av objekt du arbetar med när du redigerar koden. Tidig bindning minskar antalet och allvarlighetsgraden för körningsfel eftersom det gör att kompilatorn kan rapportera fel när ett program kompileras.

Anteckning

Sen bindning kan endast användas för att komma åt typmedlemmar som deklareras som Public. Åtkomst till medlemmar som deklarerats som Friend eller Protected Friend resulterar i ett körningsfel.

Se även