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

Structure Statement

Object-Datentyp

Konzepte

Auf NULL festlegbare Werttypen (Visual Basic)

Effiziente Verwendung von Datentypen (Visual Basic)

Datentypen in Visual Basic

Weitere Ressourcen

Typkonvertierung in Visual Basic