迭代 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
是一個遺留類別;對於新項目,請考慮使用 SortedDictionary
或 SortedList<TKey, TValue>
。 SortedDictionary
對鍵進行排序,並且 SortedList<TKey, TValue>
提供類似的功能,在某些情況下具有更好的性能。
以上是如何保證 C# 中字典元素的有序枚舉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!