如何规避未使用的输出参数值?

时间:2013-03-19 12:51:23

标签: c# parameters null void out

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

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

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

}
...

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

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

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:4)

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

public static bool TryRemove<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> dictionary, TKey key)
{
    TValue dummy;
    return dictionary.TryRemove(key, out dummy);
}