Ich möchte einen Werttyp Box und geben Sie implizite Konvertierungen. Leider macht es so macht wie ein Referenz-Typ verhält stoppen heißtMaking Werttyp verhalten sich wie ein Referenztyp mit Boxen und impliziten Konvertierungen
MyTnt i1 = 3; //MyValue has a field value = 3
MyInt i2 = 5; //value = 5
i1 = i2; //both i1 and i2 = 5
i2 = 4; //i1 = 5, i2 = 4; should be i1 = i2 = 4;
Ist es möglich, Boxen mit impliziten Konvertierungen zu schreiben, so dass es hier verhält sich wie erwartet?
Referenztypen die gleiche Art und Weise, wie Ihr Beispiel verhalten. – Lee
MyInt ist ein Wrapper für int und hat implizite Konvertierungen. Ich habe gerade so viel getestet, was ich oben geschrieben habe, und ich kann Ihnen sagen, dass es sich nicht so verhält, wie ich es von ihnen erwartet habe. – wjtk4444
Ihre Erwartung ist falsch. Schreiben Sie eine Klasse, die nichts mit einem Wrapper über eine Struktur zu tun hat. Schreiben Sie einen ähnlichen Code wie oben. Es wird sich genauso verhalten. Das Schreiben von 'i1 = i2;' verbindet diese Variablen nicht dauerhaft. Das einzige, was passiert, ist, dass diese Variablen für einen bestimmten Zeitpunkt auf dasselbe Objekt verweisen. Das Zuweisen eines anderen Werts zu i2 ändert diese Realität und hat nie etwas mit i1 zu tun. –