Re: [問題] 已經建好的List<Struct>能夠修改裡面的 …
※ 引述《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
→
08/03 10:05, , 1F
08/03 10:05, 1F
推
08/06 18:39, , 2F
08/06 18:39, 2F
推
08/09 13:48, , 3F
08/09 13:48, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章