作者cole945 (躂躂..)
看板C_Sharp
标题Re: [问题] 已经建好的List<Struct>能够修改里面的 …
时间Fri Aug 3 04:07:55 2007
※ 引述《reptile0426 ( )》之铭言:
: ※ 引述《gardenest (股海寻灯)》之铭言:
: : 我现在有一个List,它的形态是struct
: : List<Struct>
: : 我现在add了好几个struct进去这个List里头。
: : List<Sort> list_sort = new List<Sort>();
: : Sort sort = new Sort();
: : list_sort.add(sort)
: arraylist是这样 list我记得是一样的东西(就这方面来说)
: 加进去LIST的都会变成 object物件
: 可是因为object是个...甚麽东西都可能的物件
: 所以你不能用
: list_sort[1].xxxx 因为没这个东西
他已经是用 generic collection了,
所以 list_sort[1] 本身就是 Sort 没有问题..
问题在於 List 内放的东西是 value type(Sturct等)
所以 list_sort[1].xxx = ooo; 变成只是在修改
list_sort[] 这个call所传回的另一个 Sort 的副本..
因为这样没有意义, 所以 C# 直接禁止这样写..
如果把 Sort 由 Sturct 改成 Class(reference type)就不会有这个错误了..
解决的方法就是修改传回的副本的值, 再放回原本的位置就可以了~
像是:
Sort s = list_sort[1];
s.xxx = ooo;
list_sort[1] = s;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.185.65
1F:→ gardenest:感谢大大分享~~我再去试看看^^ 08/03 10:05
2F:推 gardenest:大大你讲的那二个方法我都有试~都可以使用~感恩^^ 08/06 18:39
3F:推 tomex:除非是大量洗,否则少用struct这种Value Type的东西 08/09 13:48