C# 入門

ホーム > コレクション > ディクショナリー (Dictionary) と KeyValuePair

ディクショナリー (Dictionary) と KeyValuePair

ここではディクショナリー (Dictionary) を紹介します。

ディクショナリーというと、「辞書」というのが直ぐに浮かぶと思いますが、ここでいうディクショナリーというのは、 「キーと値のペアのコレクション(集まり)」のことです。

キーと値のペア、というのは、例えば社員番号でいえば、1000 = 鈴木さん、1050 = 山田部長、2003 = 佐藤さん・・・というように、 何らかの値 (=キー) を決めると、それに対する値が決まるもの、ということです。

ディクショナリには、そういうキーと値のペアをたくさん保持できるというわけです。

System.Collections.Generic 名前空間の下の Dictionary では、キーの型、値の型を指定できます。

キーと値のペアというと、HashTable というのもありますが、Dictionary は強い型付けをして使うところが異なります。

さっそく、使い方をみてみましょう。次の例では、キーが int 型、値が string 型として宣言されています。

using System;
using System.Collections.Generic;
using System.Linq;

namespace keyval1 {
    class Program {
        static void Main( string[] args ) {
            var dic = new Dictionary<int, string>();
            dic[10] = "B";
            dic[1] = "A";
            dic[50] = "C";
            foreach( var k in dic ) {
                Console.WriteLine( "{0}", k.GetType().ToString() );
                Console.WriteLine( "{0} - {1}", k.Key, k.Value );
            }            
        }
    }
}

この結果は次のようになりました。

System.Collections.Generic.KeyValuePair`2[System.Int32,System.String]
10 - B
System.Collections.Generic.KeyValuePair`2[System.Int32,System.String]
1 - A
System.Collections.Generic.KeyValuePair`2[System.Int32,System.String]
50 - C

foreach でディクショナリを列挙すると、ひとつひとつの要素の型は、KeyValuePair という型になっていることがわかりますね。

KeyValuePair は例えば次のように使うことができます。コンストラクタに渡されたキーと値を保持して、Key、Value プロパティーからそれを返すだけのシンプルな構造体です。

var kv1 = new KeyValuePair<int, string>(123, "Hello");
Console.WriteLine( "{0} - {1} [{2}]",
  kv1.Key, kv1.Value, kv1.GetType().ToString() );

このコードの結果は次の通り。

123 - Hello 
[System.Collections.Generic.KeyValuePair`2[System.Int32,System.String]]
ホーム > コレクション > ディクショナリー (Dictionary) と KeyValuePair