Безопасен ли этот подход
Безопасен ли подход под нитью? Я знаю, что ConcurrentDictionary предоставляет метод TryRemove, но мне просто не нравится иметь переменную для значения, которую я никогда не буду использовать.
ConcurrentDictionary<int, int> myDict = new ConcurrentDictionary<int, int>();
if (myDict.ContainsKey(1))
((IDictionary<int, int>)myDict).Remove(1);
1 ответ
Решение
Похоже, ваша цель - улучшить ясность кода, устраняя необходимость использования out
параметр. Это действительная проблема, но с использованием Remove
это не правильный путь.
Определите себе вспомогательный метод:
static bool TryRemove<TKey, Value>(
this ConcurrentDictionary<TKey, Value> dict, TKey key) {
TValue value;
return dict.TryRemove(key, out value);
}