0

我正在使用ConcurrentDictionary,我需要使用删除元素TryRemove

的实现TryRemove需要一个 out 参数,该参数返回将被删除的对象。

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

}
...

每当我删除字典中的条目时,我都不想在虚拟变量上使用额外的一行:这就是为什么我试图绕过 out return 参数,但未能成功键入下面的恐怖内容。我也google了一下,没有成功。

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

有没有办法或聪明的技巧来管理未使用的输出参数,所以不需要在任何地方声明虚拟变量?

4

2 回答 2

7

您可以创建不返回已删除值的扩展方法 TryRemove。

于 2013-03-19T12:52:12.363 回答
4

您可以编写一个扩展方法,例如:

public static bool TryRemove<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> dictionary, TKey key)
{
    TValue dummy;
    return dictionary.TryRemove(key, out dummy);
}
于 2013-03-19T12:54:50.703 回答