Hallo Palladin007,
was bei einer Zuweisung passiert, gehört zu den Grundlagen, die wir als bekannt voraussetzen.
Bei Werttypen wird der Zustand/Inhalt von einer Struktur in die andere Struktur übertragen. Bei Referenztypen enthalten alle Variablen nur Referenzen, entsprechend wird bei einer Zuweisung nur die Referenz der Instanz übertragen.
Offensichtlich reden wir über Referenztypen. Selbst wenn du an this zuweisen könntest (was nicht geht, wie du selbst gemerkt hast), würde nur eine Referenz übertragen werden, und nicht wie du es offensichtlich willst, der Zustand der einen Instanz an die andere Instanz.
Trenne also immer klar zwischen einer Instanz und deren Zustand. Instanzen können überhaupt nicht überschrieben werden. Man kann nur deren Zustand überschreiben.
Es ist zwar in gewissem Sinne blöd, dass man bei der (binären /Xml-)Deserialisierung des .NET-Frameworks eine neue Instanz bekommt, aber das ist leider so.
Natürlich kann man eine Methode schreiben, die den Zustand einer Instanz sichert und eine zweite, die diesen Zustand später in derselben Instanz wiederherstellt, eben dadurch, dass man die einzelnen Felder/Eigenschaften der Instanz extern speichert (siehe auch Memento-Pattern) und später wieder einzeln in die Instanz überträgt. Um das nicht individuell für jede Klasse und deren Eigenschaften programmieren zu müssen, kann man Reflection benutzen (z.B. Type.GetProperties).
Für die Frage, ob man besser die Felder oder besser die Eigenschaften sichert, siehe
Untersch. Behandlung der Objektdaten bzgl. Modifizierer bei Serialisierung in den versch. Formaten.
herbivore