2011-02-06 62 views
2
List<T> lst = new List<T>(); 

public List<T> List 
{ 
    get { return lst; } 
    set { //cod...???????????????????? } 
} 
+4

到底是什麼問題? – jcolebrand 2011-02-06 06:18:53

+0

嗯,你的問題是什麼?我應該有一套實施?我應該清除lst,然後將所有項目從值複製到lst?一堆不同的方式來看待這個 - 我們需要你更多地描述你所要求的東西。 – stephbu 2011-02-06 06:19:04

回答

5
List<T> lst = new List<T>(); 

public List<T> List 
{ 
    get { return lst; } 
    set { lst = value; } 
} 
2

在大多數情況下是這樣,你不希望一個二傳手,有效地使列表本身只讀。換句話說,任何人都可以改變列表的內容,但是你永遠不能給對象的一個​​實例一個新的列表。

0
List<T> lst = new List<T>(); 

public List<T> List 
{ 
    get { return lst; } 
    set { lst.AddRange(value); } 
} 
1

從您的評論上面它看起來像你想的setter過度複製的所有項目,在這種情況下,你可以這樣做:

private List<T> lst; 

public List<T> List { 
    get { return lst; } 
    set { lst = new List<T>(value); } 
} 

但是,如果這就是你想要的,我只想建議使用自動屬性,機智:

public List<T> MyList { get; set; } 

當然這會引發封裝問題,正如Gabe指出的那樣。

0

只需使用Studio進行封裝即可。 ;)

enter image description here

1

大多數情況下我會建議集合類型的屬性沒有一個公共設置,使他們不允許改變實際徵收對象的引用,只是修改集合。否則,如果用戶保存對集合的引用,然後在代碼的另一部分將該屬性設置爲另一個集合,則會導致混淆問題。然後,第一個用法對包含該屬性的類未使用的內容進行引用。

public List<T> List { get; private set;} 

public MyClass() 
{ 
    this.List = new List<T>(); 
} 

,或者取決於何時以及如何你要定義你的收藏上...

private List<T> list = new List<T>(); 
public List<T> List { get { return list; } }