C# 是可观察的集合<;T>;适用于非UI场景

C# 是可观察的集合<;T>;适用于非UI场景,c#,observablecollection,C#,Observablecollection,我不太熟悉ObservableCollection,但实现它似乎为我提供了一种基于任何添加/删除/替换/清除操作更新自定义集合状态的方便方法 然而,我看到的示例通常在WPF/WinForms数据绑定的上下文中引用它 实现它是否会带来我应该警惕的任何不必要的开销/依赖项,即在我的场景中(只是根据添加/删除等更新我添加到集合中的扩展状态)是否最好只实现集合或类似的集合,并通过覆盖每个添加/删除/替换/清除操作来更新扩展状态?如果要在WPF/WinForms应用程序之外使用该集合,则该集合没有强依赖性

我不太熟悉ObservableCollection,但实现它似乎为我提供了一种基于任何添加/删除/替换/清除操作更新自定义集合状态的方便方法

然而,我看到的示例通常在WPF/WinForms数据绑定的上下文中引用它


实现它是否会带来我应该警惕的任何不必要的开销/依赖项,即在我的场景中(只是根据添加/删除等更新我添加到集合中的扩展状态)是否最好只实现集合或类似的集合,并通过覆盖每个添加/删除/替换/清除操作来更新扩展状态?

如果要在WPF/WinForms应用程序之外使用该集合,则该集合没有强依赖性。它只是实现了一个方便的接口

ObservableCollection之所以经常与UI关联,是因为它在使用MVVM模式时提供了更新视图的灵活性。话虽如此,我认为没有理由阻止您在非UI代码中使用它。请参阅perfromance相关信息。

即使ObservableCollection已在3.0版(也引入了WPF)的框架中引入,但它与UI概念没有很强的联系。此外,如果阅读,则类型的描述不会以任何方式引用UI上下文:

表示动态数据集合,该集合在添加、删除项或刷新整个列表时提供通知


事实上,它非常适合UI场景,因为它已经实现了InotifyPropertyChanged。所以要回答您的问题,是的,在非UI场景中使用ObservableCollection是完全可以的。

谢谢您的回复。。我希望是这样。谢谢Ucodia。我已经接受了Sandeeps的答案,因为它包含一些性能数据来说明这一点。正如你所说的,MSDN文档让我相信它是合适的,但是当你搜索时,有太多的例子可以用于UI,我想确定一下。谢谢Sandeep,看到一些性能数据也很有意思。非常感谢。