I this MSDN Magazine article, der Verfasser (Hervorhebung von mir):Liefert Unboxing nur einen Zeiger auf den Wert innerhalb des Boxed-Objekts auf dem Heap?
Beachten Sie, dass immer Boxen erstellt ein neues Objekt und kopiert die Bits des unboxed Wert auf das Objekt. Auf der anderen Seite, Unboxing gibt einfach einen Zeiger auf die Daten innerhalb eines Boxed-Objekts: keine Speicherkopie auftritt. Es ist jedoch häufig der Fall, dass Ihr Code verursachen die Daten, die durch die ungeboxten Referenz auf jeden Fall kopiert werden.
Ich bin verwirrt durch den Satz, den ich fett habe und den Satz, der darauf folgt. Von allem, was ich gelesen habe, einschließlich this MSDN page, habe ich noch nie gehört, dass das Unboxing nur einen Zeiger auf den Wert auf dem Heap zurückgibt. Ich hatte den Eindruck, dass das Unboxing dazu führen würde, dass Sie eine Variable mit einer Kopie des Wertes auf dem Stapel haben, so wie Sie es begonnen haben. Wenn meine Variable schließlich "einen Zeiger auf den Wert auf dem Heap" enthält, dann habe ich keinen Werttyp, ich habe einen Zeiger.
Kann jemand erklären, was das bedeutet? War der Autor auf Crack? (Es gibt mindestens einen weiteren eklatanten Fehler in dem Artikel). Und wenn das wahr ist, was sind die Fälle, in denen "Ihr Code dazu führt, dass die Daten, auf die die nicht eingebettete Referenz verweist, trotzdem kopiert werden"?
Ich habe gerade festgestellt, dass der Artikel fast 10 Jahre alt ist, also ist dies etwas, das sich sehr früh im Leben von .Net geändert hat.
Ich sehe! Vielen Dank. –