Wie man kopiert ist Objekt-abhänig.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| class TestKoord { public int X { get; set; } public int Y { get ; set; }
public TestKoord( int x, int y) { X = x; Y = y; } } ....
TestKoord a = new TestKoord(5, 4);
TestKoord tiefeKopieVonA = new TestKoord(a.X, a.Y); |
hmm.. blödes Beispiel

Vom typ int bekommt man immer eine tiefe Kopie.
Anderes Beispiel:
Angenommen die Eigenschaften X und Y sind vom Typ eines komplexen Objekts, dann ist (siehe Kommentar)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| class TestKoord { public KomplexesObjet X { get; set; } public KomplexesObjet Y { get ; set; }
public TestKoord( KomplexesObjet x, KomplexesObjet y) { X = x; Y = y; } } ....
TestKoord a = new TestKoord(x,y);
TestKoord flacheKopieVonA = new TestKoord(a.X,b.Y);
TestKoord tiefeKopieVonA = new TestKoord(x.clone(), y.clone()); |
Tu mir schwer beim erklären :/
Flache Kopie: Neues Objekt des BasisObjekt, aber nur Refernzen (verwendet gleiche Objekte wir ursprüngliches Objekt) der SubObjekte/Eigenschaften
Tiefe Kopie: Neue SubObjekte des BasisObjekt und neue SubObjekte (eigner Speicherbereich)
Ich werde mal nach Literatur schauen, die das vlt. deutlicher erklärt sowie ein Beispiel implementieren, dafür hab ich aber wohl erst nächste Woche Zeit.
Mfg Daniel