首页 新闻 会员 周边 捐助

麻烦问下,如果对象在循环外面实例化得时候为什么最后list 里面添加的5对象 都是 name4和age4?

0
悬赏园豆:20 [已解决问题] 解决于 2016-10-31 09:45

程序和返回结果如下,如果实例化在循环里面是可以返回正确结果的

最美的不是下雨天的主页 最美的不是下雨天 | 初学一级 | 园豆:4
提问于:2016-10-30 19:34
< >
分享
最佳答案
0

应该把Student实例化包含在循环里面的,在外面的话,你只是创建了一个对象,意味着就一块内存地址,在set这个对象中的属性值时,只找到这块地址,Object是引用类型,最后一次赋值是4,所以最终5个对象的结果都会这个。-引用类型和值类型的区别

1             int a = 0;
2             List<int> list1 = new List<int>();
3             for (int i = 0; i < 5; i++)
4             {
5                 a = i;
6                 list1.Add(a);
7             }

debug这段代码就明白了。

收获园豆:5
~扎克伯格 | 小虾三级 |园豆:1923 | 2016-10-31 09:31

了解,谢啦

最美的不是下雨天 | 园豆:4 (初学一级) | 2016-10-31 09:44
其他回答(3)
0

实例化要在循环里面,你这样写等于就一个对象,一直在覆盖值

收获园豆:5
90后1场梦 | 园豆:244 (菜鸟二级) | 2016-10-30 19:42

了解,谢啦

0

一个student假如是一个本子.上面有2页.第一页是name第二页是age

你在这个本子上第一页写上name1,第二页写上age1.

循环然后继续在这个本子的2页上擦掉原来的name1.age1.写上name2,agen2

你每一次加到list里的都是同一个本子.

如果在循环内那就是:每次都拿一个新本子过来.

我还是建议新手买本C程序设计. 入门.这种问题真的属于**问题

收获园豆:5
吴瑞祥 | 园豆:29449 (高人七级) | 2016-10-30 21:31

了解,谢啦

0

因为你定义的student是class,new了之后保存的是一个引用

收获园豆:5
刘宏玺 | 园豆:14020 (专家六级) | 2016-10-31 09:22

了解,谢啦

清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册