unity游戏开发-C#语言基础篇(值类型和引用类型)

 class Program
    {
        static void Main(string[] args)
        {
            int[] A = new int[] { 2, 5, 8, 12, 34 };
            int[] B = new int[] { 3, 5, 7, 8, 9 };

            int[] C = A;
            A[2] = 333;
            A = null;//注意A的位置,放上面会报错,放在这里没影响;null放在堆中 深复制 浅复制  堆中没有执行顺序; 引用类型都存在堆中,引用堆得指针;

            Console.WriteLine(C[2]);//换是333;



            //数组中的值拷贝到另一个数组中(值的拷贝)
            int[] Jiu = { 10, 20, 30, 40 };
            int[] Xin = new int[5];
            Console.WriteLine("Xin[0]重新赋值之前,Jiu[0]={0}、Xin[0]={1}", Jiu[0], Xin[0]);
            Jiu.CopyTo(Xin, 0);     //这里仅仅是把一个数组的值复制到另一个数组中,独立的两份  没有= int[] Jiu;不是引用的; copy的是值;
            Xin[0] = 88;
            Console.WriteLine("Xin[0]重新赋值之后,Jiu[0]={0}、Xin[0]={1}", Jiu[0], Xin[0]);


            //引用类型
            int[] Old1 = { 1,2,3,4,5};
            int[] New1 = Old1;

            Console.WriteLine("前:{0} {1}",Old1[2], New1[2]);
            Old1[2] = 888;

            Console.WriteLine("后:{0} {1}", Old1[2], New1[2]);


            //值类型
            int[] Old2 = { 1, 2, 3, 4, 5 };
            int[] New2=new int[10];
            Old2.CopyTo(New2,0);//是赋值,不是引用;


            Console.WriteLine("前:{0} {1}", Old2[2], New2[2]);

            New2[2] = 888;

            Console.WriteLine("后:{0} {1}", Old2[2], New2[2]);


            Console.ReadKey();
        
        }
    }

你可能感兴趣的:(unity游戏开发-C#语言基础篇(值类型和引用类型))