【C#】Dictionary にキーや値が既に存在するかチェックする方法

【C#】Dictionaryにキーや値が既に存在するかチェックする方法

C# の Dictionary は同じキーの二重登録ができません。同じキーを追加しようとするとコンパイルエラーが出ます。

using System.Collections.Generic;

public class Sample
{
    public static void Main()
    {
        var testDic = new Dictionary<string, int>();
        testDic.Add("国語", 80);
        testDic.Add("英語", 90);
        testDic.Add("数学", 75);
        testDic.Add("数学", 100); // エラー:キーには既に"数学"が存在します
    }
}

本記事では Dictionary でデータを追加する際、既にキーや値が存在するか事前にチェックする方法を紹介します。

Dictionary の初期化方法については以下の記事で紹介しています。

【C#】配列、List、Dictionaryの初期化方法まとめ【C#】配列, List, Dictionary の初期化方法まとめ

Dictionary のキーや値の存在チェック方法

Dictionary のキーが存在するか確認する方法(ContainsKey

ContainsKeyを使うことで、Dictionary に指定のキーが存在しているか確認できます。

using System;
using System.Collections.Generic;

public class Sample
{
    public static void Main()
    {
        var testDic = new Dictionary<string, int>();
        testDic.Add("国語", 80);
        
        // 指定のキーが含まれるかチェック
        if (testDic.ContainsKey("国語"))
        {
            Console.WriteLine("既にキーに「国語」は含まれています");
        }
    }
}

出力結果

キーに「国語」は含まれています

Dictionary の値が存在するか確認する方法(ContainsValue

ContainsValueを使うことで、Dictionary に指定の値(Value)が存在しているか確認できます。

using System;
using System.Collections.Generic;

public class Sample
{
    public static void Main()
    {
        var testDic = new Dictionary<string, int>();
        testDic.Add("国語", 80);
        
        // 指定の値(Value)が含まれるかチェック
        if (testDic.ContainsValue(80))
        {
            Console.WriteLine("既に値に「80」は含まれています");
        }
    }
}

出力結果

値に「80」は含まれています

Dictionary にキーが無ければ追加する方法(TryAdd)

TryAddメソッドを使えば、既に Dictionary にキーがない場合にのみ追加されます。

返り値が bool型なので、if 文でキーの追加に成功 / 失敗した場合の処理を書くことも可能です。

using System.Collections.Generic;

public class Sample
{
    public static void Main()
    {
        var testDic = new Dictionary<string, int>();
        testDic.Add("国語", 80);
        testDic.TryAdd("数学", 90);

        if (testDic.TryAdd("数学", 70))
        {
            // キーの追加に成功した場合の処理
        }
        else
        {
            // キーの追加に失敗した場合の処理
        }
    }
}

TryAdd は、追加するキーが nullの場合はエラーが出るのでご注意ください。

参考リンク

関連記事

【C#】Dictionary で値の合計値を計算する方法【C#】Dictionary で値 ( Value ) の全要素の合計値を計算する方法Dictionary の要素を foreach で順番に取得する方法【C#】Dictionary の要素を foreach で順番に取得する方法