c#中,对于对象的复制给出如下渐进式的设计
public class Content {
public int Val = 0;
}
public class Cloner {
public Content MyContent = new Content();
public Cloner() {
}
public object GetCopy() {
return MemberwiseClone ();
}
}
即利用MemberwiseClone来做,但是本函数只是生成新的Cloner之后,将成员值一一对应的复制过去,新的跟旧的指向了同一个Content
为了达到深复制,如下:
public class Content {
public int Val = 0;
}
public class Cloner:ICloneable {
public Content MyContent = new Content();
public Cloner(int val) {
MyContent.Val = val;
}
public object Clone() {
Cloner clonedCloner = new Cloner (MyContent.Val);
return clonedCloner;
}
}
当然其也有可能需要递归调用内部各个成分的Clone函数