首页 新闻 搜索 专区 学院

求解该题答案,以及过程分析,重在分析

1
悬赏园豆:5 [已解决问题] 解决于 2013-09-24 11:02

 class Person

    {

        public int Age { getset; }

    }

            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);

 

 

求解释??

姚志超的主页 姚志超 | 初学一级 | 园豆:119
提问于:2013-09-04 08:03
< >
分享
最佳答案
0

这个问题应该考察的是对值类型和引用类型的区别吧

像int类型之间的赋值其实是一种完全拷贝,例如:

int A ;

int B = A ; //这个过程其实是完成拷贝,显示为B分配一个空间,然后将A的值赋值到这个地址空间,所以当B改变时候A不会受影响

但是如果是对象,因为对象是引用类别的,所以对象间的赋值是同一个地址的引用,例如:

person A,

Person B = A ;//这个时候其实A,B内容指向的地址是相同的,也就是A和B数据是对同一个对象的引用的,但是A,B本身的地址是不相同的,当A,B中任何一个数据发生改变的时候,另一个数据也会相应的更新,因为他们的数据来源是同一个对象而不是像值类型那样是一种值的拷贝过程

收获园豆:5
andy1987 | 菜鸟二级 |园豆:490 | 2013-09-04 19:39
其他回答(6)
0

20  21

风一样的平凡 | 园豆:202 (菜鸟二级) | 2013-09-04 08:22
0

关于值类型与引用类型 你可以再去see see

0.617 | 园豆:410 (菜鸟二级) | 2013-09-04 08:45
0

20 20

越天 | 园豆:26 (初学一级) | 2013-09-04 08:46
0

一楼正解,值类型和引用类型的直观区别在于传值时传递的是什么,值类型传值(i2=i1;是把i1的值传给i2,此时它们分别对应两个不同的值,所以i1的变化不会影响i2);引用类型传引用(相当于p1把房间地址给了p2,然后p1又把房间里的Age改变了,所以p2再去房间拿Age时,取到的是改变后的值)。

nianhua11 | 园豆:736 (小虾三级) | 2013-09-04 08:50
0

给4楼分吧。

jone_e | 园豆:1410 (小虾三级) | 2013-09-04 08:59
0

20 21

BLUESMAN | 园豆:213 (菜鸟二级) | 2013-09-04 09:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册