可观察集合 - 通过循环访问 vs 删除项目.清除()

本文关键字:删除项目 vs 清除 访问 循环 集合 观察 | 更新日期: 2023-09-27 18:35:18

我有一个ObservableCollection,它绑定到一些ItemsControl(FlipView)作为其ItemsSource。我在触摸设备上滚动时遇到了问题,一旦用户触摸屏幕,整个 FlipView 就会消失,当手指从屏幕上移开时它会重新出现。因此,为了解决这个问题,我必须通过在必须刷新集合时清除集合来解决此问题(而不是重新实例化它)。我注意到当我使用.Clear() 为了清除集合,但是当我循环访问集合并逐个删除项目时,问题已解决。

所以,我仍然不清楚这两种清除可观察集合的方法有什么区别?

可观察集合 - 通过循环访问 vs 删除项目.清除()

如果我在内部没记错的话,ObservableCollection维护一个IList,该被分配了一个List的实例。ObservableCollection.Clear 方法最终调用 interal list 上的 Clear,然后List.Clear该方法使用 Array.Clear 清除项。