早期和晚期繫結 (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 的成員會導致執行階段錯誤。

另請參閱