Dot-Net

當我遍歷字典(.NET 通用資料結構)時,它的順序是否與我添加它們的順序相同?

  • September 20, 2011

我有一個字典,我通常用一個鍵訪問,所以我需要快速隨機訪問讀取。但是,對於一個功能,我需要處理字典中順序很重要的每個項目。它似乎在測試中工作正常。依賴字典中項目的順序可以嗎?

不可以。如果您需要保留訂單,您還應該有一份商品清單。您可以將所需的所有操作封裝在您自己的集合類中,這將同時更新字典和列表。

不幸的是,.NET 本身沒有支持這一點的字典——這是一個相當普遍的請求——Java 確實如此,就像LinkedHashMap一樣。

您絕對不能依賴 Dictionary<> 按添加順序返回結果 - 正如文件所述。

在測試中, Dictionary<> 似乎總是以它們添加的相同順序列舉 KeyValuePairs<>。但是, Dictionary<> 的 Mono 實現沒有。Mono 在實現行為時遵循文件,我假設他們看到了文件的那部分,然後以某種不維護順序的方式實現。

另一種選擇是使用 OrderedDictionary,它將保持順序。

引用自:https://stackoverflow.com/questions/258204