using System;
namespace Chapter12_1212_CloneMethod
{
class Program
{
static void Main(string[] args)
{
// 下面演示克隆值类型数组
int[] arr1 = { 1,2,3};
Console.WriteLine("the arr1 is:");
foreach (int tempi in arr1)
{
Console.WriteLine("{0}", tempi);
}
int[] arr2 = (int[])arr1.Clone();
Console.WriteLine("After call Clone,you get an other array");
foreach (int tempi in arr2)
{
Console.WriteLine("{0}", tempi);
}
arr2[0] = 100;
arr2[1] = 200;
arr2[2] = 300;
Console.WriteLine("After assign value the arr2 is:");
foreach (int tempi in arr2)
{
Console.WriteLine("{0}", tempi);
}
//下面演示克隆引用性数组
A[] A_arr1 = new A[3] { new A(), new A(), new A() };
A[] A_arr2 = (A[])A_arr1.Clone();//你得到了另外一个数组,它的指向和A_arr1是一样的
Console.WriteLine("address of A_arr1 is:{0}",A_arr1);
Console.WriteLine("address of A_arr2 is:{0}",A_arr2);
//未修改之前,两个数组是这样的
Console.WriteLine("A_arr1 's value is:{0}",A_arr1[0].Value);
Console.WriteLine("A_arr1 's value is:{0}",A_arr1[1].Value);
Console.WriteLine("A_arr1 's value is:{0}", A_arr1[2].Value);
Console.WriteLine("A_arr2 's value is:{0}",A_arr2[0].Value);
Console.WriteLine("A_arr2 's value is:{0}", A_arr2[1].Value);
Console.WriteLine("A_arr2 's value is:{0}", A_arr2[2].Value);
//修改A_arr2 ,A_arr1也会变
A_arr2[0].Value = 100;
A_arr2[1].Value = 200;
A_arr2[2].Value = 300;
Console.WriteLine("After Change value:");
Console.WriteLine("A_arr1 's value is:{0}", A_arr1[0].Value);
Console.WriteLine("A_arr1 's value is:{0}", A_arr1[1].Value);
Console.WriteLine("A_arr1 's value is:{0}", A_arr1[2].Value);
Console.WriteLine("A_arr2 's value is:{0}", A_arr2[0].Value);
Console.WriteLine("A_arr2 's value is:{0}", A_arr2[1].Value);
Console.WriteLine("A_arr2 's value is:{0}", A_arr2[2].Value);
}
class A
{
public int Value = 5;
}
}
}