Echte Kopie eines Objektes erstellen
-
Hi Leute,
wie stelle ich es an, wenn ich ein Objekt tatsächlich mal kopieren möchte?
Hintergrund:
Ich will überprüfen, ob mein Objekt in einem Dialog geändert wurde:myClass selectedDB = (myClass)listBox1.SelectedItem; dbSettings.DBSettings = selectedDB; dbSettings.ShowDialog(); if(dbSettings.DBSettings != selectedDB) ...
So klappt das natürlich nciht... Wie mach ich das am Besten?
-
Hmm, ich würd dem Objekt vermutlich IComparable oder sowas spendieren und .CompareTo() benutzen...
-
dadurch erstelle ich aber keine Kopie.
Das Vergleichen funktioniert ja, das ist nicht das Problem. Das Problem ist, dass ich in dem Quellcode nur eine Instanz habe, aber zwei bräuchte!
-
Schreib dir doch einen Kopierkonstruktor:
class foo { public: foo(foo instance) { this.a = instance.a; } private: int a; } ... foo a = new foo(); foo b = new foo(a); ...
(Nicht getestet)
Grüße,
Martin
-
Möglicherweise interessant:
http://blogs.msdn.com/brada/archive/2003/04/09/49935.aspx
-
ICloneable oder serialisieren.
-
JimmydaMage schrieb:
Schreib dir doch einen Kopierkonstruktor:
class foo { public: foo(foo instance) { this.a = instance.a; } private: int a; } ... foo a = new foo(); foo b = new foo(a); ...
(Nicht getestet)
Grüße,
Martin
Danke
Genau das will ich nicht.
-
habe es jetzt folgendermaßen gemacht:
Habe eine neue Methode ShallowCopy hinzugefügt die den Rückgabewert von this.MemberwiseClone() zurückgibt.