因为今天在写Java程序的时候数组复制出现了问题,所以也就查了查C#中数组的复制。
同样的C#中数组的复制也是进行的引用的传递,而不是值传递。
首先看一个实例:
namespace ArrayDemo { class Program { static void Main(string[] args) { int[] array1 = { 1, 2, 3, 4, 5 }; int[] array2 = array1; int[] array3 = new int[array1.Length]; array1.CopyTo(array3, 0); int[] array4 = new int[array1.Length]; Array.Copy(array1, array4, array1.Length); int[] array5 = (int[]) array1.Clone(); for (int i = 0; i < array1.Length; i++) { array1[i] += 1; } for (int i = 0; i < array2.Length; i++) { Console.Write(array2[i]); Console.Write(" "); } Console.WriteLine(); for (int i = 0; i < array3.Length; i++) { Console.Write(array3[i]); Console.Write(" "); } Console.WriteLine(); for (int i = 0; i < array4.Length; i++) { Console.Write(array4[i]); Console.Write(" "); } Console.WriteLine(); for (int i = 0; i < array5.Length; i++) { Console.Write(array5[i]); Console.Write(" "); } } } }运行结果如下:
可以看到,数组array2是引用传递,其值会随着array1的变化而变化,其他的数组都进行的是拷贝操作,其值不会随着array1的变化而变化。
下面说说,C#中数组复制的方法,其实上面的实例中已经有所体现。
1.利用for循环进行遍历(这个很简单,不用多说)
2.利用数组的CopyTo方法
int[] array3 = new int[array1.Length]; array1.CopyTo(array3, 0);3.利用Array类的Copy方法
int[] array4 = new int[array1.Length]; Array.Copy(array1, array4, array1.Length);4.利用数组的Clone方法(需要进行类型的强转)
int[] array5 = (int[]) array1.Clone();具体参数含义参考MSDN文档
二维数组的也和Java中一样,这里不再多说。