class Person
{
public int Age { get; set; }
}
int i1 = 20;
int i2 = i1;
i1++;
Console.WriteLine(i2);
Person p1 = new Person();
p1.Age = 20;
Person p2 = p1;
p1.Age++;
Console.WriteLine(p2.Age);
求解释??
这个问题应该考察的是对值类型和引用类型的区别吧
像int类型之间的赋值其实是一种完全拷贝,例如:
int A ;
int B = A ; //这个过程其实是完成拷贝,显示为B分配一个空间,然后将A的值赋值到这个地址空间,所以当B改变时候A不会受影响
但是如果是对象,因为对象是引用类别的,所以对象间的赋值是同一个地址的引用,例如:
person A,
Person B = A ;//这个时候其实A,B内容指向的地址是相同的,也就是A和B数据是对同一个对象的引用的,但是A,B本身的地址是不相同的,当A,B中任何一个数据发生改变的时候,另一个数据也会相应的更新,因为他们的数据来源是同一个对象而不是像值类型那样是一种值的拷贝过程
20 21
关于值类型与引用类型 你可以再去see see
20 20
一楼正解,值类型和引用类型的直观区别在于传值时传递的是什么,值类型传值(i2=i1;是把i1的值传给i2,此时它们分别对应两个不同的值,所以i1的变化不会影响i2);引用类型传引用(相当于p1把房间地址给了p2,然后p1又把房间里的Age改变了,所以p2再去房间拿Age时,取到的是改变后的值)。
给4楼分吧。
20 21