[英]Which way of returning a readonly wrapper of List<T> is preferable?
比如,我們有一個帶有私有List的泛型類。 我們可以使它至少以兩種方式返回此列表的只讀包裝:
public class Test<T>
{
public List<T> list = new List<T>();
public IEnumerable<T> Values1
{
get
{
foreach (T i in list)
yield return i;
}
}
public IEnumerable<T> Values2
{
get
{
return list.AsReadOnly();
}
}
}
Values1
和Values2
反映了底層集合中的任何Values1
,並阻止它自行修改。
哪種方式更好? 應該注意什么? 或者還有其他更好的方法嗎?
如果輸出只需要IEnumerable<T>
,我更喜歡:
public IEnumerable<T> Values
{
return this.list.AsReadOnly();
}
由於ReadOnlyCollection<T>
實現了IEnumerable<T>
,因此它為您的對象提供了一個安全的包裝器,同時仍然具有靈活性和高效性,並阻止了轉換器能夠設置值。
如果您決定需要在結果中執行不同的操作,則可以隨后更改內部實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.