Раннее и позднее связывание (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
. Доступ к членам, объявленным как Friend
или Protected Friend
, приводит к ошибке времени выполнения.