第2段代码好像永远也无法实现不了

.Net技术 码拜 8年前 (2016-03-01) 841次浏览
本人书上第2段代码体好像永远也实现不了,都是无参构造函数,本人本人动手写了一下  无法写出来  请高手们看一下,你们能不能在第一段代码的基础上写全第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

引用 8 楼 weikeli19 的回复:


本人的疑惑是用MemberwiseClone方法  当本人改了一个对象里的成员  另外一个也随之改变啊!莫非嵌套在类里面的引用类型的对象不会改变?

MemberwiseClone从来没有保证过 ‘…改了一个对象里的成员  另外一个也随之改变’。
你观测到的现象,出自于MemberwiseClone只克隆一层,没有进行‘深度克隆’的行为。
MemberwiseClone本身是没有深度克隆,但你作为程序作者,可以层层调用MemberwiseClone,来达到深度克隆的目的。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明第2段代码好像永远也无法实现不了
喜欢 (0)
[1034331897@qq.com]
分享 (0)