C#中深复制和浅复制

浅复制

      浅复制主要使用MemberwiseClone()调用,主要是拷贝原对象的值类型,而原对象中的引用和目标对象的引用相同:例如:

 public class Content
 {
    public int Val;
 }
 public class Cloner
 {
    public Content MyContent=new Content();

    public Cloner(int newVal)
    {
        MyContent.Val = newVal;
    }

    public object GetCopy()
    {
        return this.MemberwiseClone();
    }
 }

通过GetCopy()得到的浅复制包括一个字段,但是它引用的对象和源对象相同。

深复制:

深复制主要实现.Net的接口,直接拷贝,原对象和目标对象都是分离的对象:

实现ICloneable接口,执行方法clone();

 public class Cloner:ICloneable
 {
    public Content MyContent=new Content();

    public Cloner(int newVal)
    {
        MyContent.Val = newVal;
    }

    public object Clone()
    {
        Cloner clonedCloner=new Cloner(MyContent.Val);
        return clonedCloner;
    }
 }

 

复制的对象和源对象分离,没有了关系。

你可能感兴趣的:(C#中深复制和浅复制)