首页 新闻 会员 周边 捐助

关于C#数组和List<T>列表对数据进行赋值的问题

0
悬赏园豆:20 [已解决问题] 解决于 2015-08-07 14:56

下面声明了一个结构体,以及用此结构体声明了一个数组和一个List动态数组,给数组赋值的时候不会报错,但是给List赋值的时候就会出现如下图中的错误,求原因?

DAY-BREAK的主页 DAY-BREAK | 初学一级 | 园豆:184
提问于:2015-08-07 11:37
< >
分享
最佳答案
0

主要是因为你的Student是struct,所以是值类型,因为值类型无法返回引用,所以索引器返回的,是你添加进去的Student副本;因为是副本,所以你的修改是无法影响到List中的数据的,所以就无法保存回去,这也从侧面说明了错误信息(不是变量,一个固定的值,当然不是变量了。)

如果你要修改的话,只能重新赋值: stuList[0] = new Student(); 

或者你可以取出这个副本,对这个副本赋值:

var stu = stuList[0]; stu.age = 10;//此更改不会影响List的值,因为是副本。

收获园豆:20
幻天芒 | 高人七级 |园豆:37207 | 2015-08-07 12:08
其他回答(2)
0

List<student> stuList = new List<student>();

stuList.add(new student(){ age = 10......});

给List集合添加数据用add,慢慢学吧。

at小怪兽 | 园豆:760 (小虾三级) | 2015-08-07 11:48
0

没有东西你不能这样访问。用add()

 

如果你非要这样。先添加一个

stuList.Ad(new student());

stuList[0].age=10;

gw2010 | 园豆:1487 (小虾三级) | 2015-08-07 11:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册