【发布时间】:2017-01-18 10:34:01
【问题描述】:
我已经看到了几种在 C# 中迭代字典的不同方法。有标准方法吗?
【问题讨论】:
-
@VikasGupta 当您不知道键将是什么时,您会建议使用键值对集合做什么?
-
@displayName 如果您想对每个键值对执行某些操作,但没有对用于查找值的键的引用,您会遍历字典,对吗?我只是指出,有时您可能会想要这样做,尽管 Vikas 声称这通常是不正确的用法。
-
说它的用法不正确意味着有更好的选择。那是什么选择?
-
VikasGupta 是错的,我可以肯定,经过多年在非理论场景中的高性能 C# 和 C++ 编程。确实经常会创建一个字典,存储唯一的键值对,然后迭代这些值,这些值被证明在集合中具有唯一的键。创建任何进一步的集合是避免字典迭代的一种非常低效且昂贵的方法。请提供一个很好的替代方案,作为澄清您观点的问题的答案,否则您的评论非常荒谬。
-
VikasGupta 100% 正确。如果您有“一组键值对”并且不知道如何处理它,您可以字面上将其放入
ICollection<KeyValuePair>(最简单的实现:List)。如果您关心“高性能编程”,那么您应该知道字典唯一更快的是通过键查找项目 - 添加items 速度较慢,iterating over a dictionary can easily take twice as long as iterating over a list.
标签: c# dictionary loops