C#中System.Array中的Clone函数怎么使用?要源代码。

2025-02-26 00:37:20
推荐回答(1个)
回答1:

  首先,Clone是制造一个浅拷贝
  car a=1;
  car b=2;
  cars[] manycar=new cars[]{a,b};
  cars[] manycarClone=manycar.Clone();
  这样,manycarClone也指向了a,和b;但是a和b只有一份,也就是说如果令manycar["a"]=3 则 manycarClone["a"]=3。

  下面一段是网上找到的关于深拷贝,浅拷贝的理解,希望对你有所帮助
  你知道一个类中的变量可以是另外一个类的对象,换句话说,对象也可以成为某个类的属性。比如,腿Leg是一个类,它的对象就可以作为Person类的属性;或许这个例子不好理解,另举一个汽车Car类,它可以包含引擎Engine类,Engine的对象是类Car的属性。好,下面我们开始讲拷贝。

  假设我的Car是这样定义的:
  class Car{
  private Engine engine;
  ......
  }

  如果我们有Car benz = new Car();那么我的奔驰里面就一定有一个Engine对象,假设是engine。如果我只是Car benz2 = benz,那么实际上我只有一个benz,只是benz2指向了这个对象;如果我对它进行浅拷贝,那么现在我的确有两个奔驰了,不过两个奔驰里面却只有一个引擎,只不过两个奔驰都指向了这个唯一的引擎;但是如果我深拷贝,就意味着在复制过程中,包含在这个car对象里面的成员(对象,如engine等)无论何时出现,我都把它复制一遍,这个时候我就真正有两个benz两个engine了。事实上,深拷贝中也会涉及到拷贝的层次问题,例如如果engine对象中也包含成员对象,此时我们仍旧可以在深拷贝还是浅拷贝之间抉择。