【问题标题】:Dictionary : Will calling .Keys be ordered consistently with .Values?字典:调用 .Keys 的顺序是否与 .Values 一致?
【发布时间】:2015-08-10 17:21:25
【问题描述】:

假设我有一本字典,然后调用 .Keys,然后调用 .Values,没有任何干预操作。键的顺序是否与值的顺序一致?

换句话说,第n个键是否会像以前在字典中那样对应第n个值?

【问题讨论】:

  • 字典不保证有顺序。
  • 可能不清楚,你在问什么
  • @DanielA.White:条目的顺序不是 OP 所问的 - 他问的是键和值是否会以相同的顺序排列,答案是“是” .因此,虽然您无法预测键的顺序(仅考虑内容),但您可以预测它将与值的顺序一致。
  • 没有。尤其是如果您对多个值(如 Dictionary>)有一个键。字典的关键是哈希表,以减少提取项目的时间。

标签: c# dictionary


【解决方案1】:

键的顺序会和值的顺序一致吗?

是的,IDictionary<,>.KeysIDictionary<,>.Values 的文档都保证了这一点。

Keys 文档:

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

Values 文档:

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

【讨论】:

  • @OP:出于可读性原因,我建议不要同时枚举键和值。 Dictionary<TKey, TValue> 实现了IEnumerable<KeyValuePair<TKey, TValue>>,所以更简洁的替代方案是foreach (KeyValuePair<TKey, TValue> kvp in dict) {/*code*/}
【解决方案2】:

根据 MSDN 的 Dictionary.Keys 文档,是的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多