为什么INotifyCollectionChanged使用IList

时间:2011-12-04 10:02:50

标签: c# .net inotifycollectionchanged

阅读here,我不明白为什么它不是IList<T>但是为什么IList呢?添加它是没有意义的,所以它应该只是一个IEnumerable,或者如果你真的想要一个索引器(没有理由),请使用ReadOnlyCollection。

3 个答案:

答案 0 :(得分:2)

看看NotifyCollectionChangedEventArgs

它具有NewStartingIndexOldStartingIndex属性。

因此设计基于Indexable集合,我认为这对于例如Listboxes很方便。

答案 1 :(得分:1)

列表虚拟化方案需要建立索引。

IList是最简单的集合接口,提供对元素的索引访问。 ReadOnlyCollection是一个具体的类,因此对实现者的限制更多。

答案 2 :(得分:0)

我认为在INotifyCollectionChanged的情况下,您经常需要按名称对组件进行查找(因为属性存储为字符串),因此必须有一个索引器字符串(并且底层结构应该类似于HashTable)。

MSDN webpage上,您可以找到以下建议:

  

如果您有高级方案并想要实现自己的方案   集合,考虑使用IList,它提供非泛型   可以通过索引和单独访问的对象集合   提供最佳性能。