我正在并行化一些后端代码并尝试不破坏接口。我们有几个返回Dictionary的方法,在内部,我使用ConcurrentDictionary来执行并行操作。
从这些中返回字典的最佳方法是什么?
这感觉太简单了:
return myConcurrentDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
我觉得我错过了什么。
答案 0 :(得分:4)
Constructing the Dictionary<K,V>
directly 稍微比调用ToDictionary
更有效率。构造函数会将目标字典预分配到正确的大小,并且不需要在进行中随时调整大小。
return new Dictionary<K,V>(myConcurrentDictionary);
如果您的ConcurrentDictionary<K,V>
使用自定义IEqualityComparer<K>
,那么您可能希望pass that into the constructor too。
答案 1 :(得分:1)
不。这完全没问题。 .NET序列就是这样的好。 :d