C# Dictionaryの使い方のサンプル

C#のDictionaryの使い方のサンプルです。

確認環境
・Microsoft Visual Studio Community 2017

目次

仕組み Dictionaryクラス
初期値 要素に初期値をセットする
取得する キーを指定して値を取得する
  キーと値をすべて取得する(foreach文)
  キーの集合を取得する (Keysプロパティ)
  値の集合を取得する(Valuesプロパティ)
  指定のキーがあるか真偽値を返す(ContainsKeyメソッド)
  指定の値があるか真偽値を返す(ContainsValueメソッド)
  要素数を取得する (Countプロパティ)
追加する キーと値を追加する (Addメソッド)
更新する キーを指定して値を更新する
削除する 要素の位置を指定して要素を削除する (Removeメソッド)
  すべての要素を削除する (Clearメソッド)

Dictionaryクラス

var a = new Dictionary<string,string>();

上記はDictionaryクラスをインスタンス化して変数aに代入しています。
この変数aは複数のキーと値を持てるようになります。
<>はジェネリクスです。
varキーワードを使用していて型推論が行われます。
変数aの各キーと各値のデータ型はstringとstringです。

 

Dictionaryの変数の図

  • 「キー」と「値」の組み合わせを要素として持ちます。
  • 「キー」は一意です。
  • キーは任意の文字列を使うことができます。
  • サイズをあとから動的に変更できます。
  • Java等の他言語でのマップ(Map)にあたります。
  • 以下はMicrosoftのC#のDictionaryクラスのリンクです。
    https://msdn.microsoft.com/ja-jp/library/xfhwa508(v=vs.110).aspx

要素に初期値をセットする

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string, string>()
        { {"a","赤"},
          {"b","黄"},
          {"c","青"}
        };

        foreach (var a in colors)
        {
            Console.WriteLine(a.Key);// a b c
            Console.WriteLine(a.Value);// 赤 黄 青
        }
    }
}

8~12行目は、Dictionaryクラスをインスタンス化し、かつ初期値をセットしています。代入する変数はvarで宣言できます。
14~18行目は、foreach文で値を取得しています。

キーを指定して値を取得する

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string,string>();

        colors.Add("a","赤");
        colors.Add("b","黄");
        colors.Add("c","青");

        Console.WriteLine(colors["b"]);// 黄
    }
}

14行目は、インデクサー([b])で要素の位置を指定して値を取得しています。

キーと値をすべて取得する(foreach文)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var color1 = new Dictionary<string, string>();
        color1.Add("A", "赤");
        color1.Add("B", "黄");
        color1.Add("C", "青");

        foreach (KeyValuePair<string,string> a in color1)
        {
            Console.WriteLine(a.Key);    // A B Cと出力される
            Console.WriteLine(a.Value);  // 赤 黄 青と出力される
        }
    }
}

13行目は、foreach文でキーと値を取得しています。

キーの集合を取得する (keysプロパティ)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string,string>();

        colors.Add("a","赤");
        colors.Add("b","黄");
        colors.Add("c","青");

        foreach (var a in colors.Keys)
        {
            Console.WriteLine(a);// a b c
        }
    }
}

14行目は、keysプロパティでキーの集合を取得しています。

値の集合を取得する(Valuesプロパティ)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string,string>();

        colors.Add("a","赤");
        colors.Add("b","黄");
        colors.Add("c","青");

        foreach (var a in colors.Values)
        {
            Console.WriteLine(a);// 赤 黄 青
        }
    }
}

14行目は、valuesプロパティで値の集合を取得しています。

指定のキーがあるか真偽値を返す(ContainsKeyメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string, string>();
        colors.Add("a", "赤");
        colors.Add("b", "黄");
        colors.Add("c", "青");

       if (colors.ContainsKey("b"))
        {
            Console.WriteLine("存在します");// 存在しますと出力される
        }
    }
}

13行目は、ContainsKeyメソッドで指定のキーがあるかを取得しています。
ある場合trueです。

指定の値があるか真偽値を返す(ContainsValueメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string, string>();
        colors.Add("a", "赤");
        colors.Add("b", "黄");
        colors.Add("c", "青");

        if (colors.ContainsValue("青"))
        {
            Console.WriteLine("存在します");// 存在しますと出力される
        }
    }
}

13行目は、ContainsValueメソッドで指定の値があるかを取得しています。
ある場合trueです。

要素数を取得する (Countプロパティ)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string, string>();

        colors.Add("a", "赤");
        colors.Add("b", "黄");
        colors.Add("c", "青");

        Console.WriteLine(colors.Count);// 3
    }
}

14行目は、Countプロパティで要素数を取得しています。

キーと値を追加する (Addメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        //Dictionary<string,string> colors = new Dictionary<string,string>();
        var colors = new Dictionary<string,string>();

        colors.Add("a","赤");
        colors.Add("b","黄");
        colors.Add("c","青");

        foreach (var a in colors)
        {
            Console.WriteLine(a.Key);// a b c
            Console.WriteLine(a.Value);// 赤 黄 青
        }
    }
}

9行目は、Dictionaryクラスをインスタンス化しています。
代入する変数はvarで宣言できます。8行目のようにデータの型でも可能です。
11~13行目は、Addメソッドでキーと値を追加しています。
15~19行目は、foreach文で値を取得しています。

キーを指定して値を更新する

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string, string>();
        colors.Add("a", "赤");
        colors.Add("b", "黄");
        colors.Add("c", "青");

        colors["b"] = "オレンジ";

        Console.WriteLine(colors["b"]);// オレンジ
    }
}

13行目は、キーを指定して値を更新しています。

要素を削除する (Removeメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string, string>();

        colors.Add("a", "赤");
        colors.Add("b", "黄");
        colors.Add("c", "青");

        colors.Remove("b");

        foreach (var a in colors)
        {
            Console.WriteLine(a.Key);// a c
            Console.WriteLine(a.Value);// 赤 青
        }
    }
}

14行目は、Removeメソッドでキーを指定して削除しています。

すべての要素を削除する (Clearメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new Dictionary<string, string>();

        colors.Add("a", "赤");
        colors.Add("b", "黄");
        colors.Add("c", "青");

        colors.Clear();

        Console.WriteLine(colors.Count);// 0
    }
}

14行目は、Clearメソッドですべての要素を削除しています。

関連の記事

C# Listの使い方のサンプル

△上に戻る