gpt4 book ai didi

c# - C# Dictionary 是否保证迭代顺序?

转载 作者:行者123 更新时间:2023-11-30 14:31:37 26 4
gpt4 key购买 nike

此站点上有几个问题指出字典没有保证的迭代顺序(这是哈希表的典型特征)。但是,我无法为 Dictionary 类证明这一点:

var dict = new Dictionary<string, int>();
var rand = new Random();
var randomList = Enumerable.Range(1, 1000)
.Select(i => new { x = rand.NextDouble().ToString(), i })
.ToArray();
foreach (var t in randomList) { dict[t.x] = t.i; }
Console.WriteLine(dict.Values.SequenceEqual(randomList.Select(t => t.i))); // prints True

这是 Dictionary 类的一些未记录的行为吗?或者我只是在我的例子中遗漏了什么?

编辑:奇怪的是,这种行为会维持一段时间,但最终会随着字典变大而停止。截止值似乎是 33899(仍然打印为 true,而 33900 则打印为 false)。我想这可能与这个特定示例中的哈希冲突有关。

最佳答案

不保证 Dictionary 的迭代顺序。实际上,这意味着目前确实以一致的方式进行迭代,但将来可能会改变。

如果您编写的代码依赖于以确定性方式迭代的字典,那么如果它在未来的 .NET 版本中中断,那将是您的问题,因为 MS 已建议不要依赖它。

关于c# - C# Dictionary<TKey, TValue> 是否保证迭代顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19696805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com