【发布时间】:2011-12-28 04:05:12
【问题描述】:
MSDN 给出了这个深拷贝的例子 (http://msdn.microsoft.com/en-us/library/system.object.memberwiseclone.aspx)
public class Person
{
public int Age;
public string Name;
public IdInfo IdInfo;
public Person ShallowCopy()
{
return (Person)this.MemberwiseClone();
}
public Person DeepCopy()
{
Person other = (Person) this.MemberwiseClone();
other.IdInfo = new IdInfo(this.IdInfo.IdNumber);
return other;
}
}
但是,不是必须实例化一个新的 Person 对象,然后返回吗?例如,下面的代码是否可以接受/等于/低于上面的代码以执行深层复制?
据我了解 MemberwiseClone() 方法,它只是执行浅拷贝,即将复制对象中的值/引用复制到新对象。这会导致浅拷贝,因为内存引用是相等的,即引用指向相同的对象。
public class Person
{
public int Age;
public string Name;
public IdInfo IdInfo;
public Person ShallowCopy()
{
return (Person)this.MemberwiseClone();
}
public Person DeepCopy()
{
Person other = new Person(); // difference
other.IdInfo = new IdInfo(this.IdInfo.IdNumber);
return other;
}
}
【问题讨论】:
标签: c#