C#中数组的复制

因为今天在写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(" ");
            }
        }
    }
}
运行结果如下:

C#中数组的复制_第1张图片

可以看到,数组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中一样,这里不再多说。

你可能感兴趣的:(C#)