【发布时间】:2020-03-31 13:55:27
【问题描述】:
按相同的顺序,我不是指添加键的相同顺序!
说,
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");
}
}
}
【问题讨论】:
-
绝对不是。字典中的顺序没有定义。
-
不,不保证。
-
@Adriani6 通过相同的键,我的意思是相同的一组唯一键
-
啊,误导性标题 - 我读过“添加相同的键”并假设它是相同的键。道歉。
标签: c#