【发布时间】:2012-07-27 13:46:51
【问题描述】:
我在WPF 应用程序中将ObservableCollection 用于DataBinding,我将集合绑定到DataGrids 和ComboBoxes。由于需要,我需要根据条件从集合中删除对象,因此我使用Extension method 实现了RemoveAll 功能,例如List。
This 帖子指定了 Inheritance 优于 Extension methods 的一些优点,但对于我的情况并不是很具体,因为这是我需要添加的唯一方法,我不打算再添加一个 Extension method集合。
我想知道将其实现为Extension method 是否会更好,或者我是否应该考虑继承该类并将其添加为Instance method?
另外,我想知道两者之间是否有任何性能差异,因为在提到的帖子中没有讨论过。
【问题讨论】:
-
考虑使用
Clear作为名称,因为这以删除列表中的所有内容而闻名。另一点是编译器将使用Clear的对象实现(如果可用)(通常性能更好)。 -
好吧,Clear() 会删除所有内容,这不是我的意思。
-
啊,我忘记了 RemoveAll 使用了谓词-Delegate......对不起!你说得对
-
是的,确实如此,这就是为什么我不得不求助于 Extension 方法,因为 ObservableCollection 没有这种方法。
标签: .net wpf observablecollection