意外问题复制词典

时间:2010-03-03 16:00:33

标签: c# .net-3.5 dictionary copy

我的想法是在重置上一个的所有值时复制字典,所以我有这个指令:

var dic2 = new Dictionary<string, int>(dic.ToDictionary(kvp => kvp.Key, kvp => 0));

但是我这样做有一个意想不到的问题,因为新复制的字典与前一个字典没有相同的键顺序。

是否可以重置值但保持键的顺序相同? Witouth采取某种类型的排序?

4 个答案:

答案 0 :(得分:7)

答案不是首先依赖Dictionary<,>中的键顺序。它强调保证。

这是MSDN记录的,但不像我想要的那样清楚:

  

为了枚举,每个项目   在字典中被视为一个   KeyValuePair结构   代表一个值及其关键。该   退货的订单   未定义。

据我所知,.NET目前没有一个插入顺序保留字典实现:(

答案 1 :(得分:3)

.Net词典是无序的。

你的问题没有答案。

您应该考虑改为使用List<KeyValuePair<string, int>>

答案 2 :(得分:3)

不保留Dictionary<K,V>中键的顺序。您可能希望使用SortedDictionary<K,V>(请注意,此类根据键对条目进行排序,但不允许任意顺序,除非您创建特定的键比较器)

答案 3 :(得分:1)

Dictionary不定义键序列。它不是数组或列表。你不应该依赖字典上的键顺序。字典是为按键访问而不是顺序访问。