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

Я использую ConcurrentDictionary, и мне нужно удалить элементы, используя TryRemove.

Для реализации TryRemove требуется параметр out, который возвращает объект, который будет удален.

Body dummy;
if (!bulletBodies.TryRemove(bullet, out dummy))
{

}
...

Я не хочу использовать дополнительную строку в фиктивной переменной всякий раз, когда я удаляю запись в своем словаре: поэтому я пытался обойти параметр возврата out безуспешно, набрав ужасы ниже. Я также немного погуглил, но безуспешно.

bulletBodies.TryRemove(bullet, null);
bulletBodies.TryRemove(bullet, out null);
bulletBodies.TryRemove(bullet, void);
...

Есть ли способ или умный совет для управления неиспользуемыми параметрами, чтобы нигде не нужно было объявлять фиктивные переменные?


person Larry    schedule 19.03.2013    source источник
comment
Вы можете просто создать метод расширения.   -  person leppie    schedule 19.03.2013
comment
Метод расширения выглядит красиво. Однако действительно ли в C# нет ничего особенного в отношении обработки неиспользуемых параметров out?   -  person Larry    schedule 19.03.2013


Ответы (2)


Вы можете написать метод расширения, например:

public static bool TryRemove<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> dictionary, TKey key)
{
    TValue dummy;
    return dictionary.TryRemove(key, out dummy);
}
person Tim S.    schedule 19.03.2013
comment
Принято за код и чтобы сбалансировать количество повторений между двумя хорошими ответами. - person Larry; 19.03.2013

Вы можете создать метод расширения TryRemove, который не возвращает удаленное значение.

person alex    schedule 19.03.2013