Hat C# eine Struktur hier boxen?C# -Box oder Kopie beim Übergeben von Strukturen als Referenz?
struct S { int x; }
void foo(ref S s) { s.x = 1; }
main {
var s = new S();
foo(ref s); <-- boxing??
}
Ich habe seltsame Dinge über structs in Klassen gehört. Gibt es hier Boxen? Übergibt das eine Kopie des Mitglieds?
class C { S s; }
main {
var c = new C();
foo(ref c.s); <-- boxing here?? copy here???
}
void foo(ref S s) { s.x = 1; }
Was ist der Sinn von 'ref' wäre, wenn es in einer Kopie gemacht werden geführt? Das passiert ohne 'ref'. Also muss 'ref', um nicht völlig redundant zu sein, anders sein, indem ... keine Kopie erstellt wird. – stakx
Ich bin ein C++ Entwickler. Wenn ich sehe, was C# tut, scheint alles redundant zu sein! :) Ich möchte genau wissen, was mich etwas kostet, bevor ich es benutze. Warum also würde man den Werttyp nicht in einen Werttyp eingeben, so dass er ihn wie einen Referenztyp übergeben könnte. Frage nur. – johnnycrash
Es gibt keine Kopie oder Boxing in einem Ihrer Code-Snippets. –