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
Referenz
Datentyp: Zusammenfassung (Visual Basic)
Funktionen für die Typkonvertierung