Dela via


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 är tidigt bundet när det tilldelas till en variabel som deklareras vara av en viss objekttyp. Med tidiga 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 FS tidigt bunden.

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 hålla referenser till vilket objekt som helst, men saknar många av de fördelar som tidigt bundna objekt erbjuder. Följande kodfragment deklarerar till exempel en objektvariabel för att 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 tidiga 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. Objekt med tidig bindning är betydligt snabbare än sent bundna objekt 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-integrerad utvecklingsmiljö (IDE) 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.

Anmärkning

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

Se även