我有一個(gè)結(jié)構(gòu)列表,我想更改一個(gè)元素。例如 :MyList.Add(new MyStruct("john");MyList.Add(new MyStruct("peter");現(xiàn)在,我想更改一個(gè)元素:MyList[1].Name = "bob"但是,每當(dāng)我嘗試執(zhí)行此操作時(shí),都會(huì)出現(xiàn)以下錯(cuò)誤:無法修改System.Collections.Generic.List.this [int]'的返回值,因?yàn)樗皇亲兞咳绻沂褂妙惲斜恚瑒t不會(huì)發(fā)生此問題。我猜答案與結(jié)構(gòu)是值類型有關(guān)。因此,如果我有一個(gè)結(jié)構(gòu)列表,我應(yīng)該將它們視為只讀嗎?如果我需要更改列表中的元素,那么應(yīng)該使用類而不是結(jié)構(gòu)?
3 回答

倚天杖
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
MyList[1] = new MyStruct("bob");
C#中的struct應(yīng)該幾乎總是設(shè)計(jì)成不可變的(也就是說,一旦創(chuàng)建,就無法更改其內(nèi)部狀態(tài))。
在您的情況下,您要做的是替換指定數(shù)組索引中的整個(gè)結(jié)構(gòu),而不是嘗試僅更改單個(gè)屬性或字段。
- 3 回答
- 0 關(guān)注
- 509 瀏覽
添加回答
舉報(bào)
0/150
提交
取消