什么是更好的使用:字典<> .ForEach(pair =>)或字典<> .Keys.ForEach(key =>)?
-
06-07-2019 - |
题
如果我只能访问 Dictionary< TKey,TValue>
中的密钥,那么最好使用哪些密钥:
Dictionary<TKey, TValue>.ForEach(pair => action(pair.Key))
或
Dictionary<TKey, TValue>.Keys.ForEach(key => action(key))
哪种方法更“最佳实践”?我认为两种情况下的速度似乎非常相似。
解决方案
我认为这完全取决于您的用例。如果您只需要使用谓词中的键,我会使用第二个版本。否则,您将向lambda添加更多信息,而不是严格必要的信息。
但我不认为这里有一条硬性规则。可能只是更自然地流出键盘的任何东西。
同样,如果您需要同时使用键和值,请使用第一个键。
其他提示
我更喜欢使用
foreach (TKey key in dictionary.Keys)
{
DoStuff(key);
}
如果我只需要键,因为它表达的意图比迭代键值对要好得多而且速度不慢 - 访问键是 O(1)
。
如果速度是你的目标,那么我建议你这样做:
foreach (TKey key in yourDictionary.Keys)
action(key)
这不需要为 action
使用的任何方法创建委托。
请注意,这将是一个最小的性能优势,因为在您创建委托的情况下(如在两个示例中),编译器将从循环中提升委托的创建并仅创建一个委托实例。我仍然发现 foreach
比任何 ForEach
扩展方法更清晰,更容易阅读。
不隶属于 StackOverflow