实现通用 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中文网其他相关文章!