コガネブログ

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

【C#】Dictionaryに既に指定したキーが存在する場合は何もしないAdd関数の拡張メソッド

using System.Collections.Generic;

/// <summary>
/// Dictionary 型の拡張メソッドを管理するクラス
/// </summary>
public static class DictionaryExtensions
{
    /// <summary>
    /// <para>指定したキーと値をディクショナリに追加します</para>
    /// <para>指定したキーが既に格納されている場合は何もしません</para>
    /// </summary>
    public static void AddIfNotExists<TKey, TValue>( 
        this Dictionary<TKey, TValue> self, 
        TKey key, 
        TValue value 
    )
    {
        TValue result;
        if ( !self.TryGetValue( key, out result ) )
        {
            self.Add( key, value );
        }
    }
}
var table = new Dictionary<int, string>();
table.AddIfNotExists( 25, "ピカチュウ" );
table.AddIfNotExists( 25, "ライチュウ" );
foreach ( var n in table )
{
    Debug.Log( n.Value );
    // ピカチュウ
}