性能,使用Observable集合或INotifyPropertyChange更好吗?

use*_*992 2 c# performance c#-4.0

我必须在c#中创建一些程序,以便在我必须使用的程序之间执行IO,或者使用INotifyPropertyChange(on a List<>)或ObservableCollection<>.

我想知道在c#程序之间执行IO操作哪一个更好.

谢谢你的阅读

Chr*_*ris 8

根据您在问题和评论中列出的标准,您最好使用ObservableCollection.

INotifyPropertyChanged接口存在告诉您 - 属性已更改.当您谈论列表时,属性将是Count和Item [].这意味着,实际上,您实际被告知的所有内容都是"列表中的内容已发生变化",而不是有关实际变更的详细信息.没有任何此类信息,您的所有控件都可以根据集合的当前状态完全重绘自身.

但是,使用ObservableCollection时,会告诉您何时添加项目(以及该项目是什么以及添加的位置)以及何时删除项目(以及该项目是什么以及过去的位置).这足以让您的UI控件只需重绘实际更改的内容,这比重绘整个内容要有效得多.这就是ObservableCollection被发明的原因 - 使用它!

  • 当项目数超过100.000时,ObservableCollection的性能和内存占用将使任何计算机崩溃.在这种情况下,请转到您在每次更改时重新创建的数组.不是'MVVM'教科书,但速度快(对于我的应用程序所做的特定基准测试,速度提高了30多倍). (2认同)