C# 字典 - 每次以相同的顺序添加相同的键集是否保证每次都保持相同的顺序(无论顺序是什么)?

Vis*_*hal 0 c#

按照相同的顺序,我的意思不是添加键的顺序相同!

说,

1) 我有一本字典 d

2) 我添加 2, 4, 6 作为我的键

  • d.Add(2, "")
  • d.Add(4, "")
  • d.Add(6, "")

3) 现在我通过 d.Keys 属性访问它

  • 比如说,它按 4、2、6 的顺序返回键

现在按照相同的顺序,我的意思是,如果我不断重复步骤 2 和 3。

d.Keys 是否总是以相同的顺序返回键 4、2、6。

鉴于每次都以相同的顺序添加相同的一组键(2,4,6)!

基本上是在字典中添加键是一个确定性的过程

我已经运行了一些随机样本,看起来Dictionary.Keys 属性每次都为同一组键返回相同的序列。

但是有保证吗?

我试过的示例代码

public static void Main(string[] args)
        {
            var rand = new Random();
            var fixedKeys = Enumerable.Range(1, 100000).Select(x => rand.Next(10000000)).Distinct().ToList();

            var dic = new Dictionary<int, string>();

            foreach (var item in fixedKeys)
            {
                dic.Add(item, "");
            }

            var fixedSequence = dic.Keys;

            for (int j = 0; j < 10; j++)
            {
                dic = new Dictionary<int, string>();

                foreach (var item in fixedKeys)
                {
                    dic.Add(item, "");
                }

                if (!dic.Keys.SequenceEqual(fixedSequence))
                {
                    Console.WriteLine("Order changed");
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

小智 8

文档

评论

中键的顺序Dictionary<TKey,TValue>.KeyCollection未指定,但Dictionary<TKey,TValue>.ValueCollection与 Values 属性返回的关联值的顺序相同。

不保证键的顺序是任何顺序。