我对ObservableCollection并不是很熟悉,但实现它似乎为我提供了一种方便的方式来基于任何添加/删除/替换/清除操作更新自定义集合的状态。然而,我查看的示例通常在WPF/WinForms数据绑定的上下文中引用它。在我的情况下(仅根据添加/删除等更新扩展状态),实现它是否会带来任何不必要的开销/依赖性?是否最好只实现Collection或类似的内容,并通过覆盖每个添加/删除/替换/清除操作来更新扩展状态?
如果你想在WPF / WinForms应用程序之外使用它,那么该集合与它没有强依赖关系。它只是实现了一个方便的接口。
ObservableCollection通常与UI相关联的原因是,如果您使用MVVM模式,则它提供了灵活性来更新视图。话虽如此,我认为没有理由阻止您在非UI代码中使用它。有关性能相关信息,请参见1。
即使ObservableCollection在3.0版本的框架中引入了WPF,但它与UI概念没有强烈的联系。如果您阅读MSDN文档,则该类型的描述不以任何方式涉及UI上下文:
表示提供通知的动态数据集合,当添加、删除项目或整个列表刷新时提供通知。
事实上,它非常适用于UI场景,因为它已经实现了INotifiyPropertyChanged。所以回答您的问题,是的,在非UI场景中使用ObservableCollection完全没问题。