Referenz- und Wert-Typen: Was ist der Unterschied in .NET?

Referenz-Typen speichern einen Verweis auf die Speicheradresse eines Werts auf dem Heap. Sie können selbstbeschreibende Typen, Zeiger-Typen oder Schnittstellen-Typen sein. Der Datentyp kann aus den Werten von selbstbeschreibenden Typen bestimmt werden. Selbstbeschreibende Typen unterteilen sich wiederum in Arrays und Klassen-Typen. Die Klassen-Typen sind benutzerdefinierte Klassen, per Boxing verpackte Wert-Typen und Methodenzeiger.

Das .NET-Framework enthält eine Vielzahl von Referenz-Typen. Beispiele sind das String-Objekt samt allen weiteren Arrays – auch wenn deren Elemente Wert-Typen sind -, Klassen-Typen und Methodenzeiger. Letztlich ist alles, was von der Objekt-Klasse erbt, ein Referenz-Typ. Das heißt, auch jedes erstellte Objekt ist ein Referenz-Typ.

Eine Möglichkeit zum Identifizieren eines Referenz-Typs besteht in der Verwendung des Schlüsselworts new, das nicht für Wert-Typen verwendet wird. Der folgende C#-Codeschnipsel zeigt das Erstellen eines StringBuilder-Objekts, das ein Referenz-Typ ist.


StringBuilder sb = new StringBuilder();

Wenn die Runtime-Engine auf Referenz-Typen stößt, weist sie ihnen zwei Speicherplätze zu: einen für das eigentliche Objekt (StringBuilder im obigen Beispiel) und einen für dessen Referenz (sb im obigen Beispiel). Das eigentliche Objekt wird auf dem verwalteten Heap abgelegt, so dass es vom Speicherbereiniger erfasst wird. Die dispose-Methode findet Verwendung, um den belegten Speicher freizugeben und das Objekt für den Speicherbereiniger verfügbar zu machen.

Andererseits wird die Referenz auf das Objekt auf dem Stack gespeichert. Wenn man Referenz-Typen benutzt, wird das Schlüsselwort ref sowohl in der Methodensignatur als auch beim Aufruf in C# verwendet. Dadurch registriert das System, dass eine Referenz auf das Objekt vorhanden ist. In VB.NET wird ByRef in der Methodensignatur verwendet, beim Aufruf der Methode hingegen nichts.

Was charakterisiert Wert-Typen?

Vereinfacht ausgedrückt enthält ein Wert-Typ seine eigenen Daten. Darüber hinaus werden sie entweder auf dem Stack oder direkt innerhalb einer Struktur gespeichert. Wert-Typen können integriert, also von der Runtime-Engine implementiert, benutzerdefiniert oder aufgelistet sein.

Das .NET-Framework enthält zahlreiche integrierte Wert-Typen. Beispiele sind alle numerischen Datentypen, die Klassen Boolean, Char und Date sowie alle Strukturen, auch wenn deren Mitglieder Referenz-Typen sind, sowie Auflistungen. Wert-Typen erben direkt von der System.ValueType-Klasse. Allerdings sind Wert-Typen versiegelt. Es lassen sich also keine anderen Klassen von ihnen ableiten.

Auf Wert-Typen wird direkt zugegriffen. Daher findet das Schlüsselwort new keine Verwendung. Das folgende VB.NET-Codebeispiel demonstriert die Erstellung einer Reihe von Wert-Typen.


Dim counter As Integer
Dim finished As Boolean;
counter = 1;
finished = false;

Da Wert-Typen auf dem Stack gespeichert werden, erfasst sie der Speicherbereiniger nicht. Wenn die .NET-Runtime mit Wert-Typen arbeitet, verwendet sie direkt die zugrundeliegenden Daten. Wert-Typen bezeichnet man auch gerne als leichtere Typen, im Unterschied zu den schwereren Referenz-Typen.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

6 Stunden ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

7 Stunden ago

Chips bescheren Samsung deutlichen Gewinnzuwachs

Das operative Ergebnis wächst um fast 6 Billionen Won auf 6,64 Billionen Won. Die Gewinne…

15 Stunden ago

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

1 Tag ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

1 Tag ago

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

2 Tagen ago