Freigeben über


Object Data Type

Enthält Adressen, die auf Objekte verweisen. Sie können einer Object-Variable einen beliebigen Verweistyp (Zeichenfolge, Array, Klasse oder Schnittstelle) zuweisen. Eine Object-Variable kann auch auf Daten eines beliebigen Werttyps (numerisch, Boolean, Char, Date, Struktur oder Enumeration) verweisen.

Bemerkungen

Der Object-Datentyp kann auf Daten eines beliebigen Datentyps zeigen, einschließlich aller Objektinstanzen, die von der Anwendung erkannt werden. Verwenden Sie Object, wenn Sie zur Kompilierzeit noch nicht wissen, auf welchen Datentyp die Variable zeigen soll.

Der Standardwert von Object ist Nothing (ein NULL-Verweis).

Datentypen

Sie können einer Object-Variable eine Variable, eine Konstante oder einen Ausdruck eines beliebigen Datentyps zuweisen. Mithilfe der Methode GetTypeCode der Klasse System.Type können Sie bestimmen, auf welchen Datentyp eine Object-Variable aktuell verweist. Dies wird anhand des folgenden Beispiels veranschaulicht.

Dim myObject As Object
' Suppose myObject has now had something assigned to it.
Dim datTyp As Integer
datTyp = Type.GetTypeCode(myObject.GetType())

Der Object-Datentyp ist ein Verweistyp. Visual Basic behandelt eine Object-Variable jedoch als Werttyp, wenn sie auf Daten eines Werttyps verweist.

Speicher

Unabhängig davon, auf welchen Datentyp sie verweist, enthält eine Object-Variable nicht den Datenwert selbst, sondern einen Zeiger auf den Wert. Sie benötigt immer einen Speicherplatz von vier Bytes im Arbeitsspeicher des Computers – den Speicher für die Daten, die den Wert der Variable darstellen, nicht eingeschlossen. Durch den Code, den der Zeiger zum Suchen der Daten benötigt, ist der Zugriff auf Object-Variablen mit Werttypen etwas langsamer als der Zugriff auf explizit typisierte Variablen.

Programmiertipps

  • Interop-Überlegungen. Wenn Sie mit Komponenten interagieren, die nicht für .NET Framework geschrieben wurden (z. B. Automatisierungs- oder COM-Objekte), müssen Sie beachten, dass Zeigertypen in anderen Umgebungen nicht mit dem Object-Typ von Visual Basic kompatibel sind.

  • Leistung. Eine Variable, die Sie mit dem Object-Typ deklarieren, ist flexibel genug, um einen Verweis auf ein beliebiges Objekt zu enthalten. Wenn Sie jedoch eine Methode oder eine Eigenschaft für eine solche Variable aufrufen, tritt (zur Laufzeit) immer eine späte Bindung auf. Wenn Sie (zur Kompilierzeit) eine frühe Bindung erzwingen und so eine bessere Leistung erzielen möchten, deklarieren Sie die Variable mit einem spezifischen Klassennamen, oder wandeln Sie sie in einen spezifischen Datentyp um.

    Wenn Sie eine Object-Variable deklarieren, verwenden Sie möglichst einen spezifischen Klassentyp (z. B. OperatingSystem) anstelle des generalisierten Object-Typs. Verwenden Sie zudem die spezifischste verfügbare Klasse, z. B. TextBox anstelle von Control, um auf deren Eigenschaften und Methoden zugreifen zu können. Eine Liste der verfügbaren Klassennamen finden Sie im Objektkatalog unter Klassen.

  • Erweiterung. Alle Datentypen und alle Verweistypen können auf den Object-Datentyp erweitert werden. Dies bedeutet, dass Sie jeden beliebigen Typ in Object konvertieren können, ohne dass ein System.OverflowException-Fehler auftritt.

    Bei der Konvertierung zwischen Werttypen und Object führt Visual Basic jedoch Vorgänge aus, die als Boxing und Unboxing bezeichnet werden, und die die Ausführung verlangsamen.

  • Typzeichen. Object hat kein Literal-Typzeichen oder Bezeichner-Typzeichen.

  • Framework-Typ. Der entsprechende Typ in .NET Framework ist die Klasse System.Object.

Beispiel

Das folgende Beispiel veranschaulicht eine Object-Variable, die auf eine Objektinstanz zeigt.

Dim objDb As Object
Dim myCollection As New Collection()
' Suppose myCollection has now been populated.
objDb = myCollection.Item(1)

Siehe auch