ИИ говорит, что это полезно в случаях, когда вы имеете дело с дорогими объектами, поэтому вы создаете этот дорогой объект только тогда, когда объект с данным ключом не существует в параллельном словаре.
Я задал ИИ следующий вопрос: не могу Я просто заранее проверяю, существует объект или нет вот так:
Код: Выделить всё
if (concurrentDictionary.TryGetValue(key, out var item))
{
return item;
}
Код: Выделить всё
concurrentDictionary.ContainsKey(key)
Для меня это имеет смысл, но когда я просматривал исходный код ConcurrentDictionary, мне не удалось выяснить, есть ли какие-либо проверки, если ключ существует или нет.
Так действительно ли мы используем перегрузку AddOrUpdate, которая принимает addValueFactory, в случаях, когда мы хотим быть уверены, что не создаем экземпляр дорогостоящего объекта более одного раза?
Подробнее здесь: https://stackoverflow.com/questions/799 ... efactory-m
Мобильная версия