もこたんブログ@mocuLab(・ω・)

Programming & Designing

C#のHashSetでDictionaryのKeyのみのリスト(コレクション)的な使い方ができるよ

HashSetコレクション型
https://msdn.microsoft.com/ja-jp/library/bb397727(v=vs.110).aspx

簡単に言うと、HashSetクラスは値のないDictionary<TKey, TValue>コレクションです。
つまりHashSetを使うと、DictionaryのKey部分のみのような使い方ができます。順序が不要な重複しない要素のリストで使います。

Containsメソッドで要素が存在するかをチェックすることもできますが、Addメソッドの戻り値を使って、要素が既に存在するかを知ることもできます。

HashSetのAddメソッドでは要素がすでに存在していても、Dictionaryのように例外は発生せずにfalseが返ってきます。

シンプルなサンプル

var codeList = new List<int>() 
{ 
    1, 2, 3, 1,
};

var codeKeys = new HashSet<int>();
foreach(var code in codeList)
{
    if (codeKeys.Add(code) == false) continue;

    // なんか処理
}

var cnt = codeKeys.Count;// 3