阅读here,我不明白为什么它不是IList<T>
。 但是为什么IList呢?添加它是没有意义的,所以它应该只是一个IEnumerable,或者如果你真的想要一个索引器(没有理由),请使用ReadOnlyCollection。
答案 0 :(得分:2)
看看NotifyCollectionChangedEventArgs
。
它具有NewStartingIndex
和OldStartingIndex
属性。
因此设计基于Indexable集合,我认为这对于例如Listboxes很方便。
答案 1 :(得分:1)
列表虚拟化方案需要建立索引。
IList
是最简单的集合接口,提供对元素的索引访问。 ReadOnlyCollection
是一个具体的类,因此对实现者的限制更多。
答案 2 :(得分:0)
我认为在INotifyCollectionChanged
的情况下,您经常需要按名称对组件进行查找(因为属性存储为字符串),因此必须有一个索引器字符串(并且底层结构应该类似于HashTable)。
在MSDN webpage上,您可以找到以下建议:
如果您有高级方案并想要实现自己的方案 集合,考虑使用IList,它提供非泛型 可以通过索引和单独访问的对象集合 提供最佳性能。