gpt4 book ai didi

c# - 可观察集合中的事务支持

转载 作者:行者123 更新时间:2023-11-30 17:23:23 24 4
gpt4 key购买 nike

我感兴趣的是更改可观察集合的最有效方式,即仅触发一个更改的属性。假设我想用 3 个项目填充列表,没有 addCollection 方法或类似的方法,所以我必须清除 + 3 次添加。我是否需要创建不同的可观察集合并分配?或者其他人使用什么技术?

最佳答案

NET Framework 的 ObservableCollection 类在每个项目添加到集合时发送单独的通知,并且不提供 AddRange 类型功能的机制。但是,您可以非常轻松地创建自己的集合来实现 INotifyCollectionChanged 并发送您喜欢的任何通知。

您可能会遇到的问题是,INotifyCollectionChanged 接口(interface)能够指定在单个消息中将多个项目添加到集合中,但没有标准的 NET Framework 类实际创建这些通知。因此,一些第三方和开源控件在收到添加通知时假定只添加了一项。即使是内置的 NET Framework 类也可能存在与此相关的未发现错误。

出于这些原因,我建议您的自定义集合有一种模式,在该模式下,它可以设置为始终在 AddRange 结束时发送重置通知,而不是发送单个多项目添加通知。您可以通过发送多个单项添加通知或重置通知来进一步优化这一点,具体取决于添加的项目的实际数量。

当然,在某些情况下,用新的 ObservableCollection 替换同样容易。有时这会比循环 Add() 效率低得多,因为事件处理程序和 CollectionViews 是重建的。其他时候,如果集合很大并且您的循环一次只添加几个项目,效率会更高。有时它根本不起作用。

关于c# - 可观察集合中的事务支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2253262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com