意外问题复制词典

bro*_*ing 0 c# dictionary copy .net-3.5

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

var dic2 = new Dictionary<string, int>(dic.ToDictionary(kvp => kvp.Key, kvp => 0));
Run Code Online (Sandbox Code Playgroud)

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

有没有办法重置值但保持相同的键顺序?Witouth采取某种类型的排序?

Jon*_*eet 7

答案不是首先依赖于a Dictionary<,>中键的顺序.这显然不能保证.

这在MSDN上有记录,但并不像我想要的那样清晰:

出于枚举的目的,字典中的每个项都被视为表示值及其键的KeyValuePair结构.返回项的顺序未定义.

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

  • @SLaks:在实现`IDictionary <,>`方面,这不是字典 - 它不允许你在其中放置任意键/值对.是的,你可以创建一个键/值对并使用明显的键提取 - 但是在那个阶段你已经经历了足够的箍,我不认为它可以被认为是框架的一部分...... (2认同)