读了这里,我明白了为什么它不是IList<T>。但是为什么是IList呢?添加到它中是没有意义的,所以它应该只是一个IEnumerable,或者如果您真的想要一个索引器(没有理由),那么使用ReadOnlyCollection。
发布于 2011-12-04 10:09:07
看看NotifyCollectionChangedEventArgs。
它具有NewStartingIndex和OldStartingIndex属性。
因此,设计是基于索引集合,我认为这是方便的,如列表框。
发布于 2011-12-04 10:24:30
索引是理想的列表虚拟化方案。
IList是提供元素索引访问的最简单的集合接口。ReadOnlyCollection是一个具体的类,到目前为止,它更局限于实现者。
发布于 2011-12-04 10:12:15
我认为,对于INotifyCollectionChanged,您通常需要根据组件的名称(因为属性存储为字符串)来查找组件,因此必须有一个使用字符串的索引器(底层结构可能应该类似于HashTable)。
在MSDN网页上,您可以找到以下建议:
如果您有一个高级场景,并且希望实现您自己的集合,请考虑使用IList,它提供了一个非泛型对象集合,这些对象可以通过索引单独访问并提供最佳性能。
https://stackoverflow.com/questions/8374543
复制相似问题