第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C# 只讀獲取訪問(wèn)器

C# 只讀獲取訪問(wèn)器

代碼:- (注意:- 在這里我使用只讀字意味著屬性只有獲取訪問(wèn)器。)Class Test{    public List<string> list {get;}    public string name{get;}    public Test ()    {       list =new List<string>();    }}Main(){    Test test =new Test();    test.list.add("c#"); //no error     test.name="Jhon"; //here I get compilation because property name is read-only}如果你看到上面的片段。測(cè)試類(lèi)包含兩個(gè)屬性,即名稱(chēng)和列表。在 main 方法中,我創(chuàng)建了測(cè)試類(lèi)的對(duì)象來(lái)訪問(wèn)這些屬性。因此,如果您看到我是否嘗試將值設(shè)置為 name 屬性,那么我將收到編譯錯(cuò)誤,因?yàn)?name 屬性是只讀的。同樣,如果您看到另一個(gè)屬性“列表”也是只讀的,如果我使用 List 類(lèi)的 add 屬性,那么我可以毫無(wú)錯(cuò)誤地添加到列表中。所以我不明白這是怎么發(fā)生的。
查看完整描述

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ō)清楚,所以我不知道除了我所擁有的還有什么建議。


查看完整回答
反對(duì) 回復(fù) 2021-11-28
?
忽然笑

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()}


查看完整回答
反對(duì) 回復(fù) 2021-11-28
?
縹緲止盈

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。所以這是正常的。


查看完整回答
反對(duì) 回復(fù) 2021-11-28
  • 3 回答
  • 0 關(guān)注
  • 310 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)