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

Das folgende einfache Beispiel demonstriert die Verwendung von Referenz-Typen mithilfe des Schlüsselworts new. Hier kommt eine einfache Person-Klasse zum Einsatz. Sie enthält Vorname und Nachname zusammen mit einem Titel. Zwei Methoden, überladene SwapPeople, finden Verwendung, um Instanzen der Klasse zu manipulieren.

Das Beispiel illustriert außerdem ein Feature des .NET-Frameworks und dessen Fähigkeit, nahtlos zwischen Referenz- und Wert-Typen zu wechseln. Der Compiler wechselt im Hintergrund häufig automatisch zwischen den beiden Typen. Diese Vorgänge nennt man Boxing und Unboxing. Das Konzept wird in der SwapValue-Methode demonstriert.

Jede Methode tauscht die Objekte aus, indem sie einander mittels eines temporären Objekts zugewiesen werden. Die erste Methode erwartet zwei Person-Objekte, die sie als Referenz erhält. Es ist zu beachten, dass das Schlüsselwort ref sowohl in der Methodensignatur als auch beim eigentlichen Aufruf der Methode auftaucht. Die zweite Methode benutzt ref nicht. Somit werden die eigentlichen Objekte übergeben.

Die erste Methode tauscht die Objekte aus, und der Tausch wird über die Referenzen auch außerhalb des Gültigkeitsbereichs der Methode sichtbar. Die zweite Methode tauscht ebenfalls die Objekte, was aber nur innerhalb der Methode zu erkennen ist, da die tatsächlichen Objekte verwendet werden. Jede Methode gebraucht eine Instanz der Person-Klasse namens Temp. Sie wird einem der Objekte zugewiesen, die zuvor der Methode übergeben wurden. Sie übernimmt aber nicht die Werte des Objekts. Vielmehr verweist sie auf die Speicherstelle, die das Objekt enthält.

Die dritte Methode tauscht zwei Wert-Typen (Ganzzahlen) durch Referenzen. Per Boxing konvertiert sie diese in Referenz-Typen. Dadurch werden die Änderungen ebenfalls außerhalb der Methode sichtbar. Die letzte Methode verwendet keine Referenzen. Die Werte gehen in die Methode ein, ohne erkennbare Anzeichen außerhalb der Methode.


Dies erzeugt die folgende Ausgabe:


Themenseiten: .NET, Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Referenz- und Wert-Typen: Was ist der Unterschied in .NET?

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *