Wert- und Verweistypen
In Visual Basic gibt es zwei Arten von Typen: Verweistypen und Werttypen. Variablen von Verweistypen speichern Verweise auf ihre Daten (Objekte), während Variablen von Werttypen ihre Daten direkt enthalten. Bei Verweistypen können zwei Variablen auf dasselbe Objekt verweisen. Daher können auf eine Variable angewendete Operationen das Objekt beeinflussen, auf das von der anderen Variablen verwiesen wird. Bei Werttypen besitzt jede Variable eine eigene Kopie der Daten, und auf eine Variable angewendete Operationen können die andere Variable nicht beeinflussen (außer im Fall des ByRef-Modifizierers für Parameter).
Werttypen
Ein Datentyp ist ein Werttyp, wenn die Daten in seiner eigenen Speicherbelegung enthalten sind. Werttypen umfassen Folgendes:
Alle numerischen Datentypen
Boolean
,Char
undDate
Alle Strukturen, auch wenn ihre Member Verweistypen sind
Enumerationen, da ihr zugrunde liegender Typ immer
SByte
,Short
,Integer
,Long
,Byte
,UShort
,UInteger
oderULong
ist
Jede Struktur ist ein Werttyp, auch wenn sie Verweistypmember enthält. Aus diesem Grund werden Werttypen wie Char
und Integer
von .NET Framework-Strukturen implementiert.
Werttypen können mithilfe des reservierten Schlüsselworts (beispielsweise Decimal
) deklariert werden. Mit dem New
-Schlüsselwort können Sie einen Werttyp initialisieren. Dies ist besonders nützlich, wenn der Typ über einen Konstruktor verfügt, der Parameter akzeptiert. Ein Beispiel hierfür ist der Decimal(Int32, Int32, Int32, Boolean, Byte)-Konstruktor, der auf der Grundlage der bereitgestellten Teile einen neuen Decimal
-Wert erstellt.
Verweistypen
Ein Verweistyp speichert einen Verweis auf die zugehörigen Daten. Verweistypen umfassen Folgendes:
String
Alle Arrays, auch wenn ihre Elemente Werttypen sind
Klassentypen wie Form
Delegaten
Eine Klasse ist ein Verweistyp. Beachten Sie, dass jedes Array ein Verweistyp ist, auch wenn seine Member Werttypen sind.
Da jeder Verweistyp eine zugrunde liegende .NET Framework-Klasse darstellt, muss bei der Initialisierung das Schlüsselwort des New-Operators verwendet werden. Die folgende Anweisung initialisiert ein Array:
Dim totals() As Single = New Single(8) {}
Elemente, die keine Typen sind
Die folgenden Programmierelemente gelten nicht als Typen, da sie nicht als Datentyp für ein deklariertes Element angegeben werden können:
Namespaces
Module
Ereignisse
Eigenschaften und Prozeduren
Variablen, Konstanten und Felder
Verwenden des Object-Datentyps
Sie können einer Variablen des Object
-Datentyps entweder einen Verweistyp oder einen Werttyp zuweisen. Eine Object
-Variable enthält immer einen Verweis auf die Daten, niemals die Daten selbst. Wenn Sie einer Object
-Variablen jedoch einen Werttyp zuweisen, verhält sie sich so, als enthielte sie ihre eigenen Daten. Weitere Informationen finden Sie unter Object Data Type (Object-Datentyp).
Wenn Sie ermitteln möchten, ob eine Object
-Variable als Verweistyp oder als Werttyp fungiert, können Sie sie an die IsReference-Methode in der Information-Klasse des Microsoft.VisualBasic-Namespace übergeben. Information.IsReference gibt True
zurück, wenn der Inhalt der Object
-Variablen einen Verweistyp darstellt.