实现 OrderedDictionary
实现通用 OrderedDictionary 并不是一项复杂的任务,但它可能非常耗时,并且被认为是对 Microsoft 的疏忽。部分。有多种方法可以实现它,但一种方法涉及使用 KeyedCollection 进行内部存储,并使用 Key 和 List 混合进行排序,其方式与 List 类似。
类结构
通用 OrderedDictionary (IOrderedDictionary) 的接口包括通用和非泛型 (System.Collections.Specialized.IOrderedDictionary) 接口。实现类 (OrderedDictionary) 继承自 KeyedCollectionBase 类,具有类型为 KeyedCollection2> 的私有字段。在内部存储键值对。
重写方法
OrderedDictionary 类重写 IDictionary 和 IDictionary 中的各种方法。和 IOrderedDictionary 接口:
- 与键值管理相关的方法(Add、Clear、ContainsKey、Remove)
- 通过键或索引访问值的索引器属性(this[TKey key] , this[int index])
- 操作元素顺序的方法 (Insert, IndexOf, RemoveAt)
- 通过索引检索或设置键值对的方法 (GetValue, SetValue, GetItem, SetItem)
- 用于迭代集合的枚举器和属性实现 (GetEnumerator, Count, Keys,值)
排序功能
OrderedDictionary 类包含使用内置或自定义比较器以不同方式对键或值进行排序的方法:
- SortKeys():按自然对键进行排序order.
- SortKeys(IComparer 比较器):对键进行排序使用指定的比较器。
- SortKeys(Comparison Comparison):使用指定的比较委托对键进行排序。
- SortValues():按值的自然顺序对值进行排序。
- SortValues(IComparer; Comparer):使用指定的比较器对值进行排序。
- SortValues(Comparison比较):使用指定的比较委托对值进行排序。
其他功能
OrderedDictionary 类还支持以下功能如:
- 通过 _keyedCollection 属性访问内部 KeyedCollection。
- 继承自 KeyedCollection2 类的排序算法(SortByKeys、Sort、SortByKeys)。
- Helper 方法创建DictionaryEnumerators以供使用IOrderedDictionary.
用法示例
提供的代码示例演示了如何创建、操作和排序 OrderedDictionary 实例:
- 使用键值对创建 OrderedDictionary。
- 使用索引器检索和设置值和 GetValue/SetValue 方法。
- 使用 SortKeys 和 SortValues 方法对字典进行排序通过键或值。
- 通过集合枚举来访问每个键值对。
结论
而 .NET 没有本机提供了 OrderedDictionary 的通用实现,所提供的代码示例提供了一个可以根据特定需求进行定制的强大替代方案。此实现填补了 .NET 集合库中的空白,通过基于键和基于索引的访问实现高效且有组织的数据管理。
以上是如何在 .NET 中实现通用 OrderedDictionary?的详细内容。更多信息请关注PHP中文网其他相关文章!