Freigeben über


Werttypen und Referenztypen

Es gibt zwei Arten von Typen in Visual Basic: Verweistypen und Werttypen. Variablen von Verweistypen speichern Verweise auf ihre Daten (Objekte), während Variablen von Werttypen direkt ihre Daten 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 verfügt jede Variable über eine eigene Kopie der Daten, und es ist nicht möglich, dass Vorgänge für eine Variable sich auf die andere auswirken (mit Ausnahme des ByRef-Modifizierers für Parameter).

Werttypen

Ein Datentyp ist ein Werttyp , wenn er die Daten in einer eigenen Speicherzuordnung enthält. Zu den Werttypen gehören:

  • Alle numerischen Datentypen

  • Boolean, Char und Date

  • Alle Strukturen, auch wenn ihre Member Verweistypen sind

  • Enumerationen, da ihr zugrunde liegender Typ immer SByte, Short, Integer, Long, Byte, UShort, UInteger oder ULong ist

Jede Struktur ist ein Werttyp, selbst wenn sie Elemente vom Referenztyp enthält. Aus diesem Grund werden Werttypen wie Char und Integer von .NET Framework-Strukturen implementiert.

Sie können einen Werttyp deklarieren, indem Sie das reservierte Schlüsselwort Decimal verwenden, zum Beispiel. Sie können auch das New Schlüsselwort verwenden, um einen Werttyp zu initialisieren. Dies ist besonders nützlich, wenn der Typ über einen Konstruktor verfügt, der Parameter verwendet. Ein Beispiel hierfür ist der Decimal(Int32, Int32, Int32, Boolean, Byte) Konstruktor, der einen neuen Decimal Wert aus den bereitgestellten Teilen erstellt.

Verweistypen

Ein Verweistyp speichert einen Verweis auf seine Daten. Zu den Referenztypen gehören:

  • String

  • Alle Arrays, auch wenn ihre Elemente Werttypen sind

  • Klassentypen, z. B. Form

  • Delegierte

Eine Klasse ist ein Verweistyp. Beachten Sie, dass jedes Array ein Bezugstyp ist, auch wenn es sich bei seinen Membern um Werttypen handelt.

Da jeder Verweistyp eine zugrunde liegende .NET Framework-Klasse darstellt, müssen Sie beim Initialisieren das Schlüsselwort New Operator verwenden. 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 keinen dieser Elemente als Datentyp für ein deklariertes Element angeben können:

  • Namensräume

  • Module

  • Ereignisse

  • Eigenschaften und Verfahren

  • Variablen, Konstanten und Felder

Arbeiten mit dem Objektdatentyp

Sie können entweder einen Verweistyp oder einen Werttyp einer Variablen des Object Datentyps zuweisen. Eine Object Variable enthält immer einen Verweis auf die Daten, niemals die Daten selbst. Wenn Sie einer Variablen jedoch einen Object Werttyp zuweisen, verhält es sich so, als ob er seine eigenen Daten enthält. Weitere Informationen finden Sie unter Objektdatentyp.

Sie können herausfinden, ob eine Object Variable als Verweistyp oder Werttyp fungiert, indem Sie sie an die IsReference Methode in der Information Klasse des Microsoft.VisualBasic Namespace übergeben. Information.IsReference gibt zurück True , wenn der Inhalt der Object Variablen einen Verweistyp darstellt.

Siehe auch