我的想法是在重置上一个的所有值时复制字典,所以我有这个指令:
var dic2 = new Dictionary<string, int>(dic.ToDictionary(kvp => kvp.Key, kvp => 0));
但是我这样做有一个意想不到的问题,因为新复制的字典与前一个字典没有相同的键顺序。
是否可以重置值但保持键的顺序相同? Witouth采取某种类型的排序?
答案 0 :(得分:7)
答案不是首先依赖Dictionary<,>
中的键顺序。它强调不保证。
这是MSDN记录的,但不像我想要的那样清楚:
为了枚举,每个项目 在字典中被视为一个 KeyValuePair结构 代表一个值及其关键。该 退货的订单 未定义。
据我所知,.NET目前没有一个插入顺序保留字典实现:(
答案 1 :(得分:3)
.Net词典是无序的。
你的问题没有答案。
您应该考虑改为使用List<KeyValuePair<string, int>>
。
答案 2 :(得分:3)
不保留Dictionary<K,V>
中键的顺序。您可能希望使用SortedDictionary<K,V>
(请注意,此类根据键对条目进行排序,但不允许任意顺序,除非您创建特定的键比较器)
答案 3 :(得分:1)
Dictionary不定义键序列。它不是数组或列表。你不应该依赖字典上的键顺序。字典是为按键访问而不是顺序访问。