注册 登录
编程论坛 C# 论坛

运行结果为啥是30而不是20,求解

别忘了当初 发布于 2019-08-14 09:44, 4745 次点击
         static void Main(string[] args)
        {
            int[] age1 = new int[] {10,20};
            int[] age2 = age1;
            age2[1] = 30;
            Console.WriteLine(age1[1]);


        }
运行结果为啥是30而不是20,求解
8 回复
#2
南山剑客2019-08-14 11:48
C#的数组,是按引用传递,
int[] age2 = age1;

可以理解为:age2就是aga1的一个别名,其实都是同一个数组。
#3
wufuzhang2019-08-14 19:55
int[] age1 = new int[] {10,20};在内存中开辟一块空间,数组名指向这块内存空间的首地址
int[] age2 = age1;又定义了一个数组,并初始化把age1数组的首地址赋给age2数组,相当于age1和age2都指向同一块内存空间的首地址,
age2[1] = 30;修改了第二个元素的值,age1[1]去访问的时候,值就改变了。
#4
SDCuibin2019-08-16 17:18
区分一下,什么是“值类型”,“引用类型”,你就明白了
#5
别忘了当初2019-08-19 23:17
谢谢
#6
华氏异族2019-08-20 09:12
有点
懂了
#7
laityer2019-09-14 20:02
你这种做法打个比方就是,一个房间挂了两个房间号,一个是age1,另一个是age2。
当你修改age2的时候,实际上就等于在修改age1。
#8
沉默的痞子2019-09-16 14:57
两个数组其实是同一个数组
#9
goldpac20172019-10-11 21:58
初学者,学习中,谢谢!
1