我正在实现我自己BindingList<T>
的支持排序的。到目前为止一切都运行良好,但我对如何实施RemoveSortCore
. 文档不是很明确,它只说:
如果在派生类中实现排序,则删除使用 ApplySortCore 应用的任何排序
这是否意味着我应该恢复项目的原始顺序?这篇 MSDN 文章中显示的实现只设置_isSorted
为 false,并没有真正恢复原始顺序,这使得它非常没用恕我直言......
如果我希望能够恢复原始顺序,我想我需要维护原始集合的副本(或者有更好的方法吗?)。但是如果我这样做了,我该如何处理对集合进行排序时的修改?
- 覆盖时
InsertItem
,我应该在未排序副本的末尾添加新项目吗? - 覆盖时
RemoveItem
,我得到了排序集合中的索引。但这意味着如果我还想从未排序的集合中删除该项目,我需要找到它的原始位置,这是一个 O(n) 操作,而RemoveItem
通常预计是一个 O(1) 操作。同样的问题也适用于SetItem
。
你会怎么处理?欢迎任何建议