C# のディクショナリー (Dictionary) と KeyValuePair
C# のディクショナリーとは?
ここではディクショナリー (Dictionary) について説明します。
ディクショナリーというと、「辞書」という意味がすぐに浮かぶひとも多いと思います。 しかし、データ構造でいうディクショナリーというのは「キーと値のペアのコレクション(集まり)」のことです。
キーと値のペア、というのは、例えば社員番号でいえば、1000 = 鈴木さん、1050 = 山田部長、2003 = 佐藤さん、というように、 何らかの値 (=キー) を決めると、それに対する値が決まるもの、ということです。
ディクショナリには、そういうキーと値のペアをたくさん保持できるというわけです。
System.Collections.Generic 名前空間の下の Dictionary では、キーの型、値の型を指定できます。
尚、キーと値のペアというと、System.Collections 名前空間の Hashtable というのもあります。 Hashtable ではキー、値共に object 型を受け取ります。 しかし、ジェネリッククラスの Dictionary は強い型付けをして使うところが異なります。
using System.Collections;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
var dic = new Dictionary();
dic["CA"] = "California";
dic["TX"] = "Texas";
var ht = new Hashtable();
ht.Add("CA", "California");
ht.Add("TX", "Texas");
}
}
C# のディクショナリの使い方
Dictionary<TKey, TValue> はキーの型、値の型を指定します。 < > 内のはじめの型指定がキーの型で、二つ目が値の型です。
次の例ではキー、値共に string 型としています。
using static System.Console;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
var dic = new Dictionary<string, string>();
dic["CA"] = "California";
dic["TX"] = "Texas";
foreach (var pair in dic)
{
WriteLine($"{pair.Key}: {pair.Value}");
}
// CA: California
// TX: Texas
}
}
ディクショナリ内では、 KeyValuePair という型でキーと値のペアを保持しています。
ディクショナリ内の要素を列挙するには、 foreach 文で KeyValuePair が取得できるので、それの Key プロパティ、Value プロパティからキーの値と値を取得できます。