Безопасен ли этот подход

Безопасен ли подход под нитью? Я знаю, что 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);
}
Другие вопросы по тегам