Получение словаряиз ConcurrentDictionaryв .NET 4.0 - PullRequest
1 голос
/ 20 октября 2010

Я распараллеливаю некоторый внутренний код и пытаюсь не нарушать интерфейсы.У нас есть несколько методов, которые возвращают Dictionary, и внутренне я использую ConcurrentDictionary для выполнения параллельных операций.

Каков наилучший способ вернуть словарь из них?

Это кажется почти слишком простым:

return myConcurrentDictionary.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

Я чувствую, что что-то упустил.

Ответы [ 2 ]

4 голосов
/ 20 октября 2010

Построение Dictionary<K,V> напрямую будет немного более эффективным, чем вызов ToDictionary.Конструктор предварительно назначит целевой словарь правильного размера и не будет нуждаться в изменении размера "на лету".

return new Dictionary<K,V>(myConcurrentDictionary);

Если ваш ConcurrentDictionary<K,V> использует пользовательский IEqualityComparer<K>тогда вы, вероятно, захотите передать это в конструктор тоже .

1 голос
/ 20 октября 2010

Неа. Это совершенно нормально. Последовательности .NET просто хороши. : D

...