Object als universeller Datentyp

Aktualisiert: November 2007

Der Object-Datentyp ist der Stammtyp in .NET Framework und Visual Basic. Dies bedeutet, dass alle anderen Datentypen und Objekttypen davon abgeleitet sind, entweder direkt oder ultimativ. Des Weiteren bedeutet dies, dass jeder andere Datentyp, ob elementar oder zusammengesetzt, in Object konvertiert werden kann.

Lose Typisierung

Sie können Object als universellen Datentyp verwenden. Dies wird als lose Typisierung bezeichnet. Diese Flexibilität wird im folgenden Beispiel veranschaulicht.

Dim v As Object
v = "17"
' v contains the 2-character String value "17".
v = v - 15
' v now contains the Integer value 2.
v = "H" & v
' v now contains the 2-character String value "H2".

Während Sie solche Operationen für Object-Variablen durchführen können, ohne dabei die Art der enthaltenen Daten beachten zu müssen, sind einige wichtige Dinge zu berücksichtigen:

  • Wenn Sie arithmetische Operationen oder Funktionen an Object ausführen, müssen numerische Daten enthalten sein. Andernfalls tritt ein Laufzeitfehler auf.

  • Wenn Sie Zeichenfolgen verketten, verwenden Sie anstelle des &-Operators den +-Operator. Es gibt komplexe Regeln, die angeben, wann der +-Operator seine Operanden hinzufügt und wann er sie verkettet. Der +-Operator muss in manchen Fällen außerdem eine Typüberprüfung und eine Konvertierung durchführen, was zu einer geringeren Leistung führt.

Ändern des Datentyps einer Object-Variablen

Obgleich eine Object-Variable Daten eines beliebigen Typs annehmen kann, können Sie die Variable selbst nicht in einen anderen Datentyp ändern. Sie können jedoch eine Object-Variable auf ein Array von Object-Variablen dimensionieren. Das folgende Beispiel veranschaulicht eine gültige und eine ungültige Verwendung der ReDim-Anweisung (Visual Basic).

' The following statement declares a single Object.
Dim someObj As Object
' The following reallocation is valid only for Object.
ReDim someObj(8)
' The following statement attempts an INVALID change of data type.
ReDim someObj(8) As Double

Die erste ReDim-Anweisung ändert someObj in ein Array vom Typ Object. Dies ist nur für den Object-Datentyp gültig. Die zweite ReDim-Anweisung ist ungültig, da sie einen anderen Datentyp betrifft. Sie können den gewünschten Effekt erzielen, indem Sie ein separates Array verwenden. Dies wird anhand des folgenden Beispiels veranschaulicht:

' First allocate a separate array.
Dim someArray(8) As Double
' Then assign the new array to the Object variable.
someObj = someArray

"Object" als Alternative zu einer Struktur

Da der Object-Datentyp viele unterschiedliche Datentypen speichern kann, können Sie ein Object-Array in vielen Situationen verwenden, in denen Sie normalerweise Strukturen verwenden würden. Object-Arrays sind in gewisser Hinsicht flexibler als Strukturen, da Sie den gespeicherten Datentyp in jedem Element zu jeder Zeit ändern können, und Sie können das Array dynamisch gestalten, sodass Sie dessen Größe wie erforderlich ändern können. Allerdings nimmt ein Object-Array mehr Arbeitsspeicher in Anspruch als eine äquivalente Struktur. Außerdem ist seine Leistung geringer.

Siehe auch

Konzepte

Typenloses Programmieren in Visual Basic

Implizite und explizite Deklaration

Typüberprüfung in Visual Basic

Effiziente Verwendung von Datentypen

Deklaration von Objektvariablen

Zuweisen von Objektvariablen

Werte von Objektvariablen

Referenz

Datentyp: Zusammenfassung (Visual Basic)

Funktionen für die Typkonvertierung

Weitere Ressourcen

Typkonvertierung in Visual Basic