0

を使用して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);
...

未使用の out パラメータを管理する方法または巧妙なヒントがあるので、ダミー変数をどこにも宣言する必要はありませんか?

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 に答える