为什么INotifyCollectionChanged使用IList

本文关键字:IList 使用 INotifyCollectionChanged 为什么 | 更新日期: 2023-09-27 18:16:41

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

为什么INotifyCollectionChanged使用IList

看看NotifyCollectionChangedEventArgs

具有NewStartingIndexOldStartingIndex性质。

所以设计是基于可索引集合,我认为这是方便的,如列表框。

索引对于列表虚拟化场景是理想的。

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

我认为在INotifyCollectionChanged的情况下,您经常需要根据组件的名称执行查找(因为属性存储为字符串),因此必须有一个接受字符串的索引器(底层结构可能应该是类似HashTable的东西)。

在MSDN网页上可以找到以下建议:

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

相关文章: