實作通用 OrderedDictionary
雖然 OrderedDictionary 的通用實作在 .NET 3.5 中可能不可用,但建立一個並不太複雜。我們可以利用 KeyedCollection 進行儲存並實作各種方法來對項目進行排序,例如 List
介面
public interface IOrderedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IOrderedDictionary { // ... }
實作
public class OrderedDictionary<TKey, TValue> : IOrderedDictionary<TKey, TValue> { private KeyedCollection2<TKey, KeyValuePair<TKey, TValue>> _keyedCollection; // ... }
幫手類
public class KeyedCollection2<TKey, TItem> : KeyedCollection<TKey, TItem> { private Func<TItem, TKey> _getKeyForItemDelegate; // ... } public class Comparer2<T> : Comparer<T> { private readonly Comparison<T> _compareFunction; // ... } public class DictionaryEnumerator<TKey, TValue> : IDictionaryEnumerator, IDisposable { // ... }
測試
[TestClass] public class OrderedDictionaryTests { // ... }
這些測試示範了已實現的OrderedDictionary的各種功能。
結論
雖然.NET 可能不會提供通用的OrderedDictionary 實現,使用這些資源創建您自己的實現是維護基於鍵的查找速度和插入順序的可行解決方案。
以上是如何在 .NET 3.5 中實作通用 OrderedDictionary?的詳細內容。更多資訊請關注PHP中文網其他相關文章!