早期和晚期繫結 (Visual Basic)
當物件指派給物件變數時,Visual Basic 編譯器會執行稱為 binding 的處理序。 當物件指派給宣告為特定物件型別的變數時,該物件即為「早期繫結」(Early Bound)。 早期繫結物件允許編譯器配置記憶體,並在應用程式執行之前執行其他最佳化。 例如,下列程式碼片斷將變數宣告為型別 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 的執行個體 (Instance) 是早期繫結。
相對來說,當物件指派給宣告為 Object 型別的變數時,該物件即為「晚期繫結」(Late Bound)。 此型別的物件可儲存任何物件的參考,但缺少早期繫結物件的優點。 例如,下列程式碼片斷宣告物件變數以儲存由 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 的型別成員。 存取宣告為 Friend 或 Protected Friend 的成員會導致執行階段錯誤。 |