Werttypen und Referenztypen
In Visual Basic werden Datentypen auf Grundlage ihrer Klassifizierung implementiert. Die Visual Basic-Datentypen können in Abhängigkeit davon klassifiziert werden, ob von einer Variablen eines bestimmten Typs eigene Daten oder ein Zeiger auf die Daten gespeichert werden. Wenn der Datentyp eigene Daten speichert, ist es ein Werttyp. Wenn er einen Zeiger auf die Daten an einer anderen Stelle im Speicher enthält, ist es ein Verweistyp.
Werttypen
Ein Datentyp ist dann ein Werttyp, wenn die Daten in der eigenen Speicherbelegung enthalten sind. Werttypen umfassen Folgendes:
Alle numerischen Datentypen
Boolean, Char und Date
Alle Strukturen, auch wenn ihre Member Verweistypen sind
Enumerationen, da der zugrunde liegende Typ immer SByte, Short, Integer, Long, Byte, UShort, UInteger oder ULong ist
Jede Struktur ist ein Werttyp, auch wenn sie Verweistyp Member enthält. Aus diesem Grund werden Werttypen wie Char und Integer von .NET Framework-Strukturen implementiert.
Werttypen können mit dem reservierten Schlüsselwort deklariert werden, z. B. mit Decimal. Sie können das New-Schlüsselwort auch verwenden, um einen Werttyp zu initialisieren. Dies ist besonders nützlich, wenn der Typ einen Konstruktor besitzt, der Parameter verwendet. Ein Beispiel dafür ist der #ctor(Int32, Int32, Int32, Boolean, Byte)-Konstruktor, der einen neuen Decimal-Wert aus den bereitgestellten Teilen erstellt.
Verweistypen
Ein Verweistyp enthält einen Zeiger auf einen anderen Speicherort, der die Daten enthält. Verweistypen umfassen Folgendes:
String
Alle Arrays, auch wenn ihre Elemente Werttypen sind
Klassentypen, z. B. Form
Delegaten
Eine Klasse ist ein Verweistyp. Daher werden Verweistypen wie Object und String von .NET Framework-Klassen unterstützt. Beachten Sie, dass jedes Array einen Referenztyp darstellt, auch wenn seine Member Werttypen sind.
Da jeder Referenztyp ein zugrunde liegendes .NET Framework-Klasse dargestellt wird, müssen Sie das Operator New (Visual Basic)-Schlüsselwort verwenden, wenn Sie initialisieren. Mit der folgenden Anweisung wird ein Array initialisiert.
Dim totals() As Single = New Single(8) {}
Elemente, die keine Typen sind
Die folgenden Programmierelemente sind keine Typen, weil Sie keines dieser Elemente als Datentyp für ein deklariertes Element angeben können:
Namespaces
Module
Ereignisse
Eigenschaften und Prozeduren
Variablen, Konstanten und Felder
Arbeiten mit dem Object-Datentyp
Sie können einer Variablen vom Datentyp Object entweder einen Verweistyp oder einen Werttyp zuweisen. Eine Object-Variable enthält immer einen Zeiger auf die Daten, nie die Daten an sich. Wenn Sie jedoch einer Object-Variablen einen Werttyp zuweisen, verhält sie sich so, als enthielte sie eigene Daten. Weitere Informationen finden Sie unter Object-Datentyp.
Sie können ermitteln, ob eine Object-Variable als Verweistyp oder Werttyp nach dem Übergeben dieser der IsReference-Methode in der Information-Klasse des Microsoft.VisualBasic-Namespace verfährt. Information.IsReference gibt True zurück, wenn der Inhalt der Object-Variablen einen Verweistyp darstellt.
Siehe auch
Referenz
Konzepte
Auf NULL festlegbare Werttypen (Visual Basic)
Effiziente Verwendung von Datentypen (Visual Basic)