本文呈現 ReversibleSortedList 內部完整巢狀類型原始碼,包含:Enumerator、KeyList、ValueList、ReversibleSortedListKeyEnumerator、ReversibleSortedListValueEnumerator,展示如何同時實作泛型/非泛型介面、支援正向/反向列舉、鍵值分離存儲。
IEnumerator> 、IDictionaryEnumerator、IEnumerator、IDisposable,版本檢查防止列舉中修改。IList、ICollection、IEnumerable,唯讀、支援 BinarySearch 快速 IndexOf。KeyList 但針對 Value,IndexOf 用 Array.IndexOf 線性搜尋。| 模式 | 體現位置 |
|---|---|
| 介面隔離 | 分別實作泛型/非泛型 IEnumerable、ICollection、IList、IDictionaryEnumerator |
| 版本檢查 | 列舉器建構時捕捉 _list.version,MoveNext/Reset 比對,修改時拋 InvalidOperationException |
| 鍵值分離陣列 | TKey[] keys、TValue[] values 平行陣列,BinarySearch 於 keys |
| 排序方向可逆 | SortDirectionComparer 封裝升冪/降冪,ListSortDirection 切換 |
| 容量自動成長 | EnsureCapacity 雙倍擴充,InternalSetCapacity 複製陣列 |