3 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
您對(duì)“只讀”屬性的工作方式有誤解。
如果您的代碼如下所示:
Test test = new Test();
test.list.Add("c#"); //no error because you are not 'setting' the object
test.list = new List<string>(); //Error here because you ARE setting the object
Add()只是 a 的一種方法List<T>,您正在修改對(duì)象而不是將屬性設(shè)置為其他內(nèi)容。
如果您希望您的收藏為“只讀”,您可以使用該ReadOnlyCollection界面。您可以在private內(nèi)部管理列表,并且只能通過(guò)public ReadOnlyCollection. 你想要的功能從來(lái)沒(méi)有說(shuō)清楚,所以我不知道除了我所擁有的還有什么建議。

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
那是因?yàn)閟et將引用設(shè)置List object,即集合的實(shí)際實(shí)例。在List本身,返回的時(shí)候,是不是只讀。如果您希望它是只讀的,您可以執(zhí)行以下操作:
private List<string> list;
public ReadOnlyCollection<string> List {get => list.AsReadOnly()}

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
public List<string> list {get;}
這意味著,如果您對(duì)name
.
test.list = new List<string>();
test.list
獲取list
對(duì)象,然后調(diào)用對(duì)象的 Add 方法 list
。所以這是正常的。
- 3 回答
- 0 關(guān)注
- 310 瀏覽
添加回答
舉報(bào)