【发布时间】:2020-02-06 11:14:24
【问题描述】:
我了解Dictionary<TKey, TValue> 中的条目顺序未定义。但是,它是确定性的吗?
也就是说,如果我以相同的顺序添加相同的元素并通过字典进行枚举,我会总是以相同的顺序获取元素,在每个运行,在每台机器上?
它似乎就是这样,但我可以依赖它吗?
【问题讨论】:
-
不,就像在 SQL 中一样。在大多数情况下是正确的,但 ...
-
@Neil Moss:如果您在不同的工作站上计算
GetHashCode,但对于相同的输入,结果可能会不同 -
如果
TKey是string并且randomized string hashing 已启用,则至少是不真实的,除了通常未定义(这意味着实现返回品牌在技术上是合法的每次调用都有新的顺序,即使是在未更改的字典上,尽管实际上它当然不会这样做)。 -
@NeilMoss 我已经更新了我上面的评论,在 .NET Core 中
GetHashCode()可以在不同的运行中为相同的对象返回不同的值 -
不仅如此,你还可以覆盖gethashcode,谁知道implementers在做什么美妙的事情
标签: c# .net dictionary deterministic