我刚刚开始学习C#不知道Clone copyto的具体区别貌似查了一下 有什么深拷贝浅拷贝的区别?什么是深拷贝浅拷贝那么那个是深拷贝 那个是浅的 具体能举个例子么?~~小女子在这先谢谢各位了~~

解决方案 »

  1.   

    Clone方法和CopyTo方法不是所有对象都有的...最常见的是数组,以数组为例...Clone方法仅复制数组的元素不复制这些引用所引用的对象,新数组中的引用与原始数组中的引用指向相同的对象...称为浅表复制,即浅拷贝...CopyTo方法则讲数组中的元素复制到另一个数组中...此操作仅仅复制元素,新数组与原始数组并无关系...而深拷贝即深层复制会复制元素和元素直接或间接引用的一切...新数组是与原始数组完全一样的独立副本...
      

  2.   

    Clone一般要求深拷贝,另一个浅拷贝
      

  3.   

    Clone()是浅表副本 如果被拷贝的 子对象包含引用其他对象的 引用时,Clone()返回的对象的子对象,跟原来的子对象都是引用同一个 内存的。
    CopyTo()深层副本,如果被拷贝的 子对象包含引用其他对象的 引用时 CopyTo() 返回的对象的 子对象,跟原来的子对象
    包含同样的 数据,但是这个新的 对象所引用 对象的 地址跟原来的 对象的 地址是不一样的
      publi class Instance{
    public int i=0;
     public int j=10;
    public Instance (int t1,int  t2){
       i = t1;j = t2;
    }
    };public class MyClone {
      Instance ins;
    public MyClone(){
     ins = new Instance (15,20);
    }
      public MyClone Clone(){
       Instance temp = new Instance(30,45);     temp.ins= this.ins;
        return temp;
    }
    };
    public class MyCopyTO{
     Instance ins;
      public MyCopyTO(){
       ins = new Instance (15,20);
    }
    public MyCopyTo CopyTO(){
         Instance temp =new Instance(30,45);
          temp.i =this.ins.i;
          temp.j = this.ins.j;
          return temp;
    }
    };
         
      

  4.   

    深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。
    浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。
    参考
    http://www.cnblogs.com/pre_con/archive/2008/10/10/1308002.html