为什么 INotifyCollectionChanged 使用 IList

发布于 2024-12-19 13:43:14 字数 257 浏览 1 评论 0原文

阅读此处,我明白为什么它不是IList但是为什么要使用 IList? 添加它是没有意义的,因此它应该只是一个 IEnumerable,或者如果您确实想要一个索引器(没有理由),请使用 ReadOnlyCollection。

Reading up here, I undestand why it is not IList<T>. But why IList at all? It makes no sense to add to it, so it should be just an IEnumerable, or if you really want an indexer (no reason why), use a ReadOnlyCollection.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绝情姑娘 2024-12-26 13:43:14

看一下 NotifyCollectionChangedEventArgs

它具有 NewStartingIndex 和 OldStartingIndex 属性。

所以设计是基于可索引集合,我认为这对于列表框等来说很方便。

Take a look at NotifyCollectionChangedEventArgs.

It has NewStartingIndex and OldStartingIndex properties.

So the design is based on Indexable collections, I assume this is convenient for eg Listboxes.

鯉魚旗 2024-12-26 13:43:14

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

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

Indexing is desirable for list virtualisation scenarios.

IList is the simplest collection interface that provided indexed access to elements. ReadOnlyCollection is a concrete class and thus far more limiting to implementors.

秋日私语 2024-12-26 13:43:14

我认为,在 INotifyCollectionChanged 的情况下,您经常需要按组件名称执行查找(因为属性在那里存储为字符串),因此有一个索引器非常重要字符串(底层结构可能应该类似于 HashTable)。

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

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

I think that in case of INotifyCollectionChanged you often need to perform a look-up for the components by their names (since the properties are stored as strings there), therefore it is essential to have an indexer that takes strings (and the underlying structure should probably be something like HashTable).

On MSDN webpage you can find the following recommendation:

If you have an advanced scenario and want to implement your own
collection, consider using IList, which provides a non-generic
collection of objects that can be individually accessed by index and
provides the best performance.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文