gpt4 book ai didi

c# - ObservableCollection.AddRange 的最佳性能

转载 作者:行者123 更新时间:2023-12-02 02:30:55 35 4
gpt4 key购买 nike

我正在为 ObservableCollection 编写一个扩展方法,并且已了解到 .Add 函数每次调用都会引发 3 个属性更改事件,

所以这样的事情是一个坏主意:

public static void AddRange<T>(this ObservableCollection<T> oc, IEnumerable<T> collection)
{
if (collection == null) { throw new ArgumentNullException("collection"); }
foreach (var i in collection) { oc.Add(i); }
}

还有其他解决方案吗?

最佳答案

鉴于Concat<T>是一个扩展方法,几乎​​可以肯定它只是调用 .Add()在幕后,它不可能拥有类(class)的内部知识。您可以使用 ildasm.exe 来确定发生了什么。

在这种情况下,我使用 ObervableCollection<T> 遇到了性能问题。几年前。我最终得出的解决方案是实现 IList<T>INotifyCollectionChanged使用自定义实现,支持引发具有实际集合增量的单个 CollectionChanged 事件(而不是每个项目的事件),以响应对 AddRange<T> 的调用。查看 NotifyCollectionChangedEventArgs 的文档以获取详细信息。

http://msdn.microsoft.com/en-us/library/system.collections.specialized.notifycollectionchangedeventargs(v=vs.110).aspx

关于c# - ObservableCollection.AddRange 的最佳性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154291/

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