本人书上第2段代码体好像永远也实现不了,都是无参构造函数,本人本人动手写了一下 无法写出来 请高手们看一下,你们能不能在第一段代码的基础上写全第2段代码?另外包含主函数代码(主函数代码随便写写)不胜感激
解决方案
15
public class Content { public int Val; internal Content Clone() { return (Content)this.MemberwiseClone(); } } public class Cloner : ICloneable { public Content MyContent = new Content(); public Cloner(int newVal) { MyContent.Val = newVal; } public Cloner() { } public object Clone() { Cloner clonedCloner = new Cloner(); clonedCloner.MyContent = MyContent.Clone(); return clonedCloner; } }
15
MemberwiseClone从来没有保证过 ‘…改了一个对象里的成员 另外一个也随之改变’。
你观测到的现象,出自于MemberwiseClone只克隆一层,没有进行‘深度克隆’的行为。
MemberwiseClone本身是没有深度克隆,但你作为程序作者,可以层层调用MemberwiseClone,来达到深度克隆的目的。