.NET標準庫中的幾個可用集合旨在保持內部項目的順序 - 例如List
,LinkedList
,Queue
或Stack
。另一方面,其他人則以其他方式安排物品,如Dictionary
或HashSet
。Ordered enumeration
我的問題是:如果一個容器保持特定順序(按順序)的元素,是保證,通過這個容器枚舉最初將按順序?
例如,我想列舉相反的順序列表中的項目。最簡單的方法就是寫:
foreach (var item in list.Reverse<type>()) { ... }
但是,只有當初始枚舉經過收集的物品在儲存它們的秩序,將工作。如果沒有這樣的保證,我可能應該用其他方式編寫代碼:
for (int i = list.Count - 1; i >= 0; i--) { ... }
其中實際上較短,但可讀性較差。
注意:我知道,該列表實際上按順序列舉項目,直覺說,所有有序的容器都會做同樣的事情。但是如果它沒有被框架保證,.NET 5.0可能會引入枚舉(例如)更有效的方式,但會破壞項目的順序。
MSDN docs表明,該訂單是通過使用術語如和「集合中第一個元素之前」「移動到集合中的下一個元素」不斷。但足以說,訂單是保證?