2
我正在實現我自己的支持排序的BindingList<T>
。到目前爲止,一切運行良好,但我對如何實施RemoveSortCore
感到困惑。該文檔是不是很明確,只說:Sortable BindingList <T>:關於RemoveSortCore的困惑
移除與ApplySortCore應用於任何類型的,如果排序在派生類中
這是否意味着我應該恢復項目的原始順序執行?在this MSDN article出的實現只設置_isSorted
爲false,實際上並沒有恢復原來的順序,這使得相當無用恕我直言...
如果我希望能夠恢復原來的秩序,我想我需要保持原始集合的副本(或者是否有更好的方法?)。但是,如果我這樣做,如何處理集合的分類修改?
- 當覆蓋
InsertItem
時,我應該在未排序的副本末尾添加新項目嗎? - 當重寫
RemoveItem
時,我給出了排序後的集合中的索引。但這意味着如果我也想從未排序的集合中刪除項目,我需要找到它的原始位置,這是一個O(n)操作,而RemoveItem
通常預計是一個O(1)操作。同樣的問題也適用於SetItem
。
你會如何處理?歡迎任何建議
謝謝,第一篇文章就是我一直在尋找的! – 2011-04-17 19:25:11