コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【C#】Dictionary から指定したキーの要素を削除する前に関数を呼び出す拡張メソッド

using System;
using System.Collections.Generic;

public static class DictionaryExtensions
{
    /// <summary>
    /// 指定したキーを持つ値を削除します。
    /// 削除前に指定された関数を呼び出します
    /// </summary>
    public static void Remove<TKey, TValue>( 
        this Dictionary<TKey, TValue> self, 
        TKey                          key, 
        Action<TValue>                act 
    )
    {
        if ( !self.ContainsKey( key ) )
        { 
            return; 
        }
        act( self[ key ] );
        self.Remove( key );
    }
}
var dict = new Dictionary<string, Character>();

...

dict.Remove( "王国兵士", c => c.Dispose() );