首页 >后端开发 >C++ >如何保证 C# 中字典元素的有序枚举?

如何保证 C# 中字典元素的有序枚举?

Susan Sarandon
Susan Sarandon原创
2025-01-17 18:47:10537浏览

How Can I Guarantee Ordered Enumeration of Dictionary Elements in C#?

迭代 C# 字典时保持顺序

标准 C# 字典本身并不保证枚举期间元素的特定顺序。 无论插入顺序如何,顺序可能会发生不可预测的变化。 但是,如果需要,可以通过一些方法来控制迭代顺序。

有序枚举方法

几种策略可以保证字典元素的有序遍历:

1。对 KeyValuePair 对进行排序:

此方法将字典转换为 KeyValuePair 对象的排序数组。

<code class="language-csharp">var sortedKVPs = _Dictionary.OrderBy(x => x.Key).ToArray();

foreach (KeyValuePair<string, string> kvp in sortedKVPs)
{
  Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value));
}</code>

此代码片段根据键对键值对进行排序,然后迭代排序后的数组,在此示例中提供字母顺序。

2。利用 OrderedDictionary:

OrderedDictionary 类显式维护插入顺序。

<code class="language-csharp">// Create an ordered dictionary
var orderedDictionary = new OrderedDictionary();

// Add elements
orderedDictionary.Add("orange", "1");
orderedDictionary.Add("apple", "4");
orderedDictionary.Add("cucumber", "6");

// Add using indexer
orderedDictionary["banana"] = 7;
orderedDictionary["pineapple"] = 7;

// Enumerate the ordered dictionary
foreach (DictionaryEntry entry in orderedDictionary)
{
  Trace.Write(String.Format("{0}={1}", entry.Key, entry.Value));
}</code>

元素按照添加到 OrderedDictionary 的确切顺序进行检索。 请注意,OrderedDictionary 是一个遗留类;对于新项目,请考虑使用 SortedDictionarySortedList<TKey, TValue>SortedDictionary 对键进行排序,并且 SortedList<TKey, TValue> 提供类似的功能,在某些情况下具有更好的性能。

以上是如何保证 C# 中字典元素的有序枚举?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn