早期和晚期繫結 (Visual Basic)

當物件指派給物件變數時,Visual Basic編譯器會執行呼叫 binding 的進程。 將物件指派給宣告為特定物件型別的變數時,該物件即為「早期繫結」。 早期繫結物件讓編譯器能夠配置記憶體,並在應用程式執行之前執行其他最佳化。 例如,下列程式碼片段會將變數宣告為 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 是特定的物件類型,所以指派給 FS 的執行個體就是早期繫結。

反之,將物件指派給宣告為 Object 型別的變數時,該物件即為「晚期繫結」。 此型別的物件可以保存對任何物件的參考,但缺少許多早期繫結物件的優點。 例如,下列程式碼片段會宣告一個物件變數來保存 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

早期繫結的優點

您應該盡可能使用早期繫結物件,因為它們可讓編譯器進行重要的最佳化,以產生更有效率的應用程式。 早期繫結物件的速度很明顯地比晚期繫結物件還快,並藉由確實描述正在使用哪種物件,讓您的程式碼更容易閱讀和維護。 早期系結的另一個優點是它啟用實用的功能,例如自動完成程式碼和動態說明,因為Visual Studio整合式開發環境 (IDE) 可以確切判斷您在編輯程式碼時所使用的物件類型。 早期繫結可降低發生執行階段錯誤的次數和嚴重性,因為它讓編譯器能夠在編譯程式時報告錯誤。

注意

晚期繫結只能用來存取宣告為 Public 的型別成員。 存取宣告為 FriendProtected Friend 的成員會導致執行階段錯誤。

另請參閱