1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 //CopyTo操作只能在两个一维数组之间进行,而Copy操作可以按照指定长度复制两个数组之间的元素,Clone操作是创建浅表副本。
7 //本实例中在修改TestClassArray2的元素值的时候,TestClassArray1的元素同时被改变。当使用new关键字和MtTestClass的构造函数修改TestClassArray2中的元素时,TestClassArray1中的元素不会同时改变,这是一个需要注意的地方,即两个数在托管内存中处于不同的位置,并不存在引用关系,仅仅是两个克隆数组相同位置的元素,指向同一个托管内存位置而已。
8 namespace OperationOfArray
9 {
10 class Program
11 {
12 class MtTestClass
13 {
14 public int test1;
15 public int test2;
16 public MtTestClass(int t1, int t2)
17 {
18 test1 = t1;
19 test2 = t2;
20
21 }
22 }
23 static void Main(string[] args)
24 {
25 int[] OneDimensional1 = { 0, 1, 2, 3, 4 };
26 int[] OneDimensional2 = new int[7];
27 OneDimensional1.CopyTo(OneDimensional2, 0);
28
29
30
31 MtTestClass[] TestClassArray1 = { new MtTestClass(1, 1), new MtTestClass(2, 2) };
32 //创建引用类型数组的浅表副本
33 MtTestClass[] TestClassArray2 = (MtTestClass[])TestClassArray1.Clone();
34 //修改副本中的值,此操作将改变克隆源数组的元素
35 TestClassArray2[1].test1 = 3;
36 TestClassArray2[1].test2 = 3;
37
38
39
40 int[,] TwoDimensional1 = { { 0, 1, 2, 3, 4 }, { 10, 11, 12, 13, 14 } };
41 int[,] TwoDimensional2 = new int[3, 7];
42 TwoDimensional2=(int[,])TwoDimensional1.Clone();
43
44 int[][] JaggedArray1 = { new int[]{20,21,22},new int[]{23,34},new int[]{25,26,27,28}};
45 int[][] JaggedArray2=new int[3][];
46 Array.Copy(JaggedArray1, JaggedArray2, 3);
47
48
49
50 Console.WriteLine("OneDimensional2第4个元素为:" + OneDimensional2[3]);
51 Console.WriteLine("OneDimensional2的长度为:" + OneDimensional2.Length);
52 Console.WriteLine("TwoDimensional2的第2,4个元素为:" + TwoDimensional2[1,3]);
53
54 Console.WriteLine("JaggedArray2的长度为:" + JaggedArray2.GetLength(0));
55
56 Console.WriteLine("JaggedArray2第3个元素的长度为:" + JaggedArray2[2].GetLength(0));
57
58 Console.WriteLine("TestClassArray1第2个元素的test1成员值为:" + TestClassArray1[1].test1);
59
60 Console.WriteLine();
61
62
63 }
64 }
65 }