Im Anschluss an diese Website erstellen: http://www.csharp411.com/c-object-clone-wars/Wie man manuell eine tiefe Kopie
ich manuell entschieden (folgende Seite 1. Clone manuell) eine tiefe Kopie meiner Klasse. Ich habe die Klonschnittstelle und alle notwendigen Eigenschaften implementiert. Ich habe mein Programm ausgeführt und überprüft, ob mein Klon tatsächlich auch der Originalinstanz entspricht. Das war richtig.
Allerdings bezieht sich meine neue Instanz immer noch auf die ursprüngliche. So wurden alle Änderungen in meiner Kopie in die ursprüngliche Instanz reflektiert.
Also wenn das nicht eine tiefe Kopie erstellt, was dann? Was hätte schiefgehen können?
(Ich möchte eine tiefe Kopie machen manuell meine Leistung zu erhöhen, so will ich nicht die ObjectCopier Klasse. (auch wenn es funktioniert gut, es dauert 90% meiner Code Laufzeit).
Code Snippets:
Klasse implementiert:
public class SudokuAlgorithmNorvig: ICloneable
{
Clone-Methode:
Clone Methodenaufruf:
SudokuAlgorithmNorvig sudokuCopy = (SudokuAlgorithmNorvig)sudoku.Clone()
habe ich die gleiche (Implementierung und Einstellung Klon-Methode) in allen meinen anderen Klassen. (Field
+ Coordinate
)
Wir müssen Ihren Code sehen, um zu sehen, was schief gelaufen ist. Das kürzeste Codebeispiel, das das Problem aufweist, wäre am besten. –
Ja, realisierte das :) Implementiere es jetzt, danke – dylanmensaert
Ok, es sieht so aus, als ob du nur einen flachen Klon des Objekts machst. Zum Beispiel, 'sudokuClone.Grid = (Feld [,]) this.Grid' zeigt NICHT' sudokuClone.Grid' auf eine neue Kopie! –