Frühes und spätes Binden (Visual Basic)Early and Late Binding (Visual Basic)

Der Visual BasicVisual Basic-Compiler führt einen als binding bezeichneten Vorgang aus, wenn ein Objekt einer Objektvariablen zugewiesen wird.The Visual BasicVisual Basic compiler performs a process called binding when an object is assigned to an object variable. Objekt wird früh gebunden, wenn es einer Variablen zugeordnet wird, für die ein spezifischer Objekttyp deklariert wurde.An object is early bound when it is assigned to a variable declared to be of a specific object type. Früh gebundene Objekte ermöglichen es dem Compiler, die Speicherbelegung und andere Optimierungen vor der Ausführung einer Anwendung durchzuführen.Early bound objects allow the compiler to allocate memory and perform other optimizations before an application executes. Das folgende Codefragment deklariert beispielsweise eine Variable des Typs FileStream:For example, the following code fragment declares a variable to be of type 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)

Da FileStream ein spezifischer Objekttyp ist, handelt es sich bei der Zuweisung der Instanz zu FS um eine frühe Bindung.Because FileStream is a specific object type, the instance assigned to FS is early bound.

Im Gegensatz dazu wird ein Objekt spät gebunden, wenn es einer Variablen zugeordnet wird, für die der Typ Object deklariert wurde.By contrast, an object is late bound when it is assigned to a variable declared to be of type Object. Objekte dieses Typs können Verweise zu beliebigen Objekten enthalten, jedoch gehen einige der Vorteile früh gebundener Objekte verloren.Objects of this type can hold references to any object, but lack many of the advantages of early-bound objects. Das folgende Codefragment deklariert beispielsweise eine Objektvariable, die ein von der CreateObject-Funktion zurückgegebenes Objekt enthalten soll:For example, the following code fragment declares an object variable to hold an object returned by the CreateObject function:

' 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

Vorteile der frühen BindungAdvantages of Early Binding

Sie sollten soweit möglich früh gebundene Objekte verwenden, da diese dem Compiler wichtige Optimierungen ermöglichen, die zu effizienteren Anwendungen führen.You should use early-bound objects whenever possible, because they allow the compiler to make important optimizations that yield more efficient applications. Früh gebundene Objekte sind bedeutend schneller als spät gebundene Objekte, verbessern die Lesbarkeit des Codes und erleichtern dessen Verwaltung, weil sie die Art der verwendeten Objekte genau angeben.Early-bound objects are significantly faster than late-bound objects and make your code easier to read and maintain by stating exactly what kind of objects are being used. Ein weiterer Vorteil der frühen Bindung besteht darin, dass sie nützliche Funktionen verfügbar macht, wie z.B. die automatische Codevervollständigung und die dynamische Hilfe, da die integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual StudioVisual Studio genau ermitteln kann, welchen Objekttyp Sie während der Bearbeitung des Codes verwenden.Another advantage to early binding is that it enables useful features such as automatic code completion and Dynamic Help because the Visual StudioVisual Studio integrated development environment (IDE) can determine exactly what type of object you are working with as you edit the code. Die frühe Bindung reduziert die Anzahl und den Schweregrad von Laufzeitfehlern, da sie dem Compiler die Ausgabe von Fehlern während der Programmkompilierung ermöglicht.Early binding reduces the number and severity of run-time errors because it allows the compiler to report errors when a program is compiled.

Hinweis

Die späte Bindung kann nur für den Zugriff auf als Public deklarierte Typmember verwendet werden.Late binding can only be used to access type members that are declared as Public. Der Zugriff auf als Friend oder Protected Friend deklarierte Member führt zu Laufzeitfehlern.Accessing members declared as Friend or Protected Friend results in a run-time error.

Siehe auchSee Also

CreateObject
Objektlebensdauer: Erstellen und Zerstören von ObjektenObject Lifetime: How Objects Are Created and Destroyed
Object-DatentypObject Data Type