Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie verwenden eine normale Deklarationsanweisung, um eine Objektvariable zu deklarieren. Für den Datentyp geben Sie entweder Object
(d. h. den Objektdatentyp) oder eine spezifischere Klasse an, aus der das Objekt erstellt werden soll.
Das Deklarieren einer Variablen als Object
ist dasselbe wie das Deklarieren als System.Object.
Wenn Sie eine Variable mit einer bestimmten Objektklasse deklarieren, kann sie auf alle Methoden und Eigenschaften zugreifen, die von dieser Klasse und den Klassen verfügbar gemacht werden, von denen sie erbt. Wenn Sie die Variable mit Object deklarieren, kann sie nur auf die Member der Object-Klasse zugreifen, es sei denn, Sie aktivieren Option Strict Off
für die späte Bindung.
Deklarationssyntax
Verwenden Sie die folgende Syntax, um eine Objektvariable zu deklarieren:
Dim variablename As [New] { objectclass | Object }
Sie können in der Deklaration auch "Öffentlich", " Geschützt", " Freund", Protected Friend
" Privat", "Freigegeben" oder "Statisch " angeben. Die folgenden Beispieldeklarationen sind gültig:
Private objA As Object
Static objB As System.Windows.Forms.Label
Dim objC As System.OperatingSystem
Späte Bindung und frühe Bindung
Manchmal ist die spezifische Klasse unbekannt, bis der Code ausgeführt wird. In diesem Fall müssen Sie die Objektvariable mit dem Object
Datentyp deklarieren. Dadurch wird ein allgemeiner Verweis auf einen beliebigen Objekttyp erstellt, und die spezifische Klasse wird zur Laufzeit zugewiesen. Dies wird als späte Bindung bezeichnet. Verspätete Bindung erfordert zusätzliche Ausführungszeit. Außerdem wird Ihr Code auf die Methoden und Eigenschaften der Klasse beschränkt, die Sie zuletzt zugewiesen haben. Dies kann Laufzeitfehler verursachen, wenn Ihr Code versucht, auf Member einer anderen Klasse zuzugreifen.
Wenn Sie die spezifische Klasse zur Kompilierungszeit kennen, sollten Sie die Objektvariable als dieser Klasse deklarieren. Dies wird als frühe Bindung bezeichnet. Frühe Bindung verbessert die Leistung und garantiert den Codezugriff auf alle Methoden und Eigenschaften der spezifischen Klasse. Wenn in den vorherigen Beispieldeklarationen die Variable objA
nur Objekte der Klasse System.Windows.Forms.Label verwendet, sollten Sie As System.Windows.Forms.Label
in ihrer Deklaration angeben.
Vorteile einer frühen Bindung
Durch das Deklarieren einer Objektvariablen als bestimmte Klasse haben Sie mehrere Vorteile:
Automatische Typüberprüfung
Garantierter Zugriff auf alle Mitglieder der bestimmten Klasse
Microsoft IntelliSense-Unterstützung im Code-Editor
Verbesserte Lesbarkeit des Codes
Weniger Fehler in Ihrem Code
Fehler, die zur Kompilierungszeit und nicht zur Laufzeit erfasst wurden
Schnellere Codeausführung
Zugriff auf Mitglieder der Objektvariablen
Wenn Option Strict
umgestellt On
ist, kann eine Objektvariable nur auf die Methoden und Eigenschaften der Klasse zugreifen, mit der Sie sie deklarieren. Im folgenden Beispiel wird dies veranschaulicht.
' Option statements must precede all other source file lines.
Option Strict On
' Imports statement must precede all declarations in the source file.
Imports System.Windows.Forms
Public Sub accessMembers()
Dim p As Object
Dim q As System.Windows.Forms.Label
p = New System.Windows.Forms.Label
q = New System.Windows.Forms.Label
Dim j, k As Integer
' The following statement generates a compiler ERROR.
j = p.Left
' The following statement retrieves the left edge of the label in pixels.
k = q.Left
End Sub
In diesem Beispiel kann p
nur die Mitglieder der Object -Klasse selbst verwenden, die nicht die Left
-Eigenschaft enthalten. Andererseits wurde q
als Typ Label deklariert, sodass es alle Methoden und Eigenschaften der Label Klasse im System.Windows.Forms Namespace verwenden kann.
Flexibilität von Objektvariablen
Beim Arbeiten mit Objekten in einer Vererbungshierarchie können Sie auswählen, welche Klasse zum Deklarieren der Objektvariablen verwendet werden soll. Bei dieser Auswahl müssen Sie die Flexibilität der Objektzuweisung mit dem Zugriff auf Elemente einer Klasse in Einklang bringen. Betrachten Sie beispielsweise die Vererbungshierarchie, die zu der System.Windows.Forms.Form Klasse führt:
Angenommen, Ihre Anwendung definiert eine Formularklasse namens specialForm
, die von der Klasse Formerbt. Sie können eine Objektvariable deklarieren, die sich speziell auf specialForm
bezieht, wie das folgende Beispiel zeigt.
Public Class specialForm
Inherits System.Windows.Forms.Form
' Insert code defining methods and properties of specialForm.
End Class
Dim nextForm As New specialForm
Die Deklaration im vorherigen Beispiel beschränkt die Variable nextForm
auf Objekte der Klasse specialForm
, macht aber auch alle Methoden und Eigenschaften von specialForm
für nextForm
verfügbar sowie alle Mitglieder aller Klassen, von denen specialForm
erbt.
Sie können eine Objektvariable allgemeiner machen, indem Sie sie als Typ Formdeklarieren, wie im folgenden Beispiel gezeigt.
Dim anyForm As System.Windows.Forms.Form
Mit der Deklaration im vorherigen Beispiel können Sie einem beliebigen Formular in Ihrer Anwendung anyForm
zuweisen. Obwohl anyForm
auf alle Member der Klasse Form zugreifen kann, kann es keine der zusätzlichen Methoden oder Eigenschaften verwenden, die für bestimmte Formulare wie specialForm
definiert sind.
Alle Member einer Basisklasse sind für abgeleitete Klassen verfügbar, aber die zusätzlichen Member einer abgeleiteten Klasse sind für die Basisklasse nicht verfügbar.