2016-06-11 14 views
1

我剛剛從Java切換到C#,並剛剛熟悉Property的概念,這似乎是獲取和設置字段值的常用方法。創建方法來改變C#中的私有字段的正確方法是什麼?

那麼我應該怎麼做,如果我需要更新字段值,但不設置它們全新的值?就像我的課上有一個字段是一個List,我需要將元素添加到List中,同時保持List的其餘部分不變。如果我只是繼續前進,創造像

void append(Point p) { } 

或者是有在C#這樣做的更優雅或文明的方式方法?

+0

你可以公開列表作爲屬性列表 Points {get;組; }'並調用Add/Remove就可以了。 –

+0

如何將項目添加到列表中,同時保持列表的其餘部分不變?這與將項目添加到列表中有何不同? – Enigmativity

回答

0

如果你想允許修改列表中,但不允許實例被改變,你可以寫 public IList<Point> MyPointList {get; private set;}

不過,如果你想只支持添加元素,那麼add方法將是一個好辦法走。

+0

你似乎是羅尼科爾曼的粉絲。 :) –

+0

大聲笑,我實際上沒有把這一起,當我想出了名字。這只是我說的。 :D –

1

沒有一種通過API設置專用字段的「正確」方法。答案取決於您想向用戶展示的功能。

如果你想,讓他們訪問您的List<Point>爲只讀集合,他們可以在他們喜歡的任何方式修改,您可以出示您的列表作爲一個只讀屬性:

public IList<Point> Points {get;} = new List<Point>(); 

如果你認爲這種方法給你的用戶太多的自由度,並且你希望對出現在列表中的點進行更嚴格的控制,你可能想要公開一個屬性來訪問列表IEnumerable<Point>和一堆用於添加/刪除/修改列表上的點。

private IList<Point> points = new List<Point>(); 
public IEnumerable<Point> Points => points; 
public void AddPoint(Point p) { 
    // validate p before inserting on the list, 
    ... 
    points.Add(p); 
} 

注:代碼示例以上使用C#6的語法。

0

C#語法簡單而優雅,寫起來很愉快。在一個類中,你可以創建一個支持公共getter和setter的私有字段。從這個班級內,你可以設置或獲得私人領域,只要你喜歡。如果一個不同的類需要訪問該字段,則需要使用公共的getter和setter。示例:可以從類中創建和編輯私人列表,但您可以選擇。使用自定義添加方法或使用List .Add方法。從另一個類中,您只需調用公共List屬性的.Add方法。真的只有一個正在編輯的私人列表。您可以爲其他任務創建另一個私人列表。在進入主列表之前,可能有一個等待驗證項目的臨時區域。

+0

[試試這個](https://en.wikipedia.org/wiki/Enter_key) – TaW

相關問題