.NET v2LinkedList的只讀封裝。如何?
當列表有一個非常有用的(4 me)方法AsReadOnly() LinkedList沒有這樣的方法。
有沒有辦法「快速」連接內部LinkedList只能從外部代碼讀取?
.NET v2LinkedList的只讀封裝。如何?
當列表有一個非常有用的(4 me)方法AsReadOnly() LinkedList沒有這樣的方法。
有沒有辦法「快速」連接內部LinkedList只能從外部代碼讀取?
ReadOnlyCollection<T>
需要一個IList<T>
作爲構造函數的參數。 LinkedList<T>
沒有實現這個接口。 List<T>
有一個構造函數過載,它將IEnumerable<T>
作爲參數,LinkedList<T>
實現此接口。所以下面應該工作:
LinkedList<int> linked = new LinkedList<int>();
// populate the list
ReadOnlyCollection<int> readOnly = new ReadOnlyCollection<int>(
new List<int>(linked));
它使用的List<T>
實例攜帶物品進入ReadOnlyCollection<T>
構造。
爲什麼不只是返回一個IEnumerable<T>
?如果您只想讓用戶枚舉列表而不修改它*,IEnumerable是明顯的選擇。
如果您想擁有LinkedList接口的只讀接口,可以將LinkedList,只讀方法轉發到包裝列表並拒絕任何更改。
*)請記住,ReadOnlyCollection不是IEnumerable將阻止調用方在引用類型集合的情況下更改對象的狀態。如果對象只能被讀取,則需要將其作爲其類型的一部分來實現。
工作。謝謝! – serhio 2009-11-19 11:42:18
*抱怨只想要一個readonly'LinkedList'不是'IList' *(這個問題,而不是答案) – 2009-11-19 11:50:45
可惜在這種情況下,我失去了第一個和最後一個鏈表的屬性... – serhio 2009-11-19 11:50:50