复制数组(

来源:互联网 发布:windows自带c编译器 编辑:程序博客网 时间:2024/05/18 14:12

 复制数组(图)

  

5.4.3  复制数组

因为数组是引用类型,所以将一个数组变量赋予另一个数组变量,就会得到两个指向同一数组的变量。而复制数组,会使数组实现ICloneable接口。这个接口定义的Clone()方法会创建数组的浅副本。

如果数组的元素是值类型,就会复制所有的值,如图5-5所示:

int intArray1 = {1, 2};
int intArray2 = (int[])intArray1.Clone();

 

 图  5-5

如果数组包含引用类型,则不复制元素,而只复制引用。图5-6 显示了变量beatles和beatlesClone,其中beatlesClone是通过在beatles上调用Clone()方法来创建的。beatles和beatlesClone引用的Person对象是相同的。如果修改beatlesClone中一个元素的属性,就会改变beatles中的对应对象。

Person[] beatles = {
new Person("John", "Lennon"),
new Person("Paul", "McCartney"),
};
Person[] beatlesClone = (Person[])beatles.Clone();

 

 图  5-6

除了使用Clone()方法之外,还可以使用Array.Copy()方法创建浅副本。但Clone()方法和Copy()方法有一个重要区别:Clone()方法会创建一个新数组,而Copy()方法只是传送了阶数相同、有足够元素空间的已有数组。

提示:

如果需要包含引用类型的数组的深副本,就必须迭代数组,创建新对象。

原创粉丝点击