ホームに戻る
出典 :
関連 :
目次 :
Dictionary ( System.Collections.Generic.Dictionary )とは
.NETにおける連想配列クラス。キーと値を関連付けて、キーから値を検索できる。
C++(STL)における std::map と共通の概念。
通常の配列との比較
以下、コード例はいずれもC#。

Dictionary は要素を自由に追加( Add() )、削除( Remove() )できる。
基本形(宣言・初期化・参照)
Dictionary<TKey, TValue>
TKey 、TValue ともに 任意の型を指定できる(「文字列をキーに数値を検索」など)。
コレクション初期化子を用いている。

キーのみ / 値のみの集合を抽出
Dictionary のキー(Keys)、値(Values)のみを抽出できる。
// Dictionary を初期化
Dictionary <int, string> dic = new Dictionary <int, string>
{
{ 0, "りんご" },
{ 1, "みかん" },
{ 2, "いちご" },
};
// キーのみ、値のみを抽出
var keys = dic.Keys; //< 戻り値は KeyCollection 型
var values = dic.Values; //< 戻り値は ValueCollection 型
// 配列化( ToArray() )可能
int[] array_keys = keys.ToArray();
string[] array_values = values.ToArray();
// List 化可能
// コンストラクタに KeyCollection / ValueCollection を渡す
List<int> list_keys = new List<int>(keys);
List<string> list_values = new List<string>(values);
Dictionaryの逆引き (値からキーを得る)
LINQの機能を用いる(System.Linq に依存)。First() 関数とラムダ式を用いて以下のように書ける。
(LINQ、
ラムダ式の詳細はそれぞれのリンク先を参照)
注) 値が重複している場合は、最初に見つかった要素のキーが返る。
// Dictionary を初期化
Dictionary <int, string> dic = new Dictionary <int, string>
{
{ 0, "りんご" },
{ 1, "みかん" },
{ 2, "いちご" },
};
// 値 (Value) が"みかん"の要素のキー (Key) を取得 (== 1)
int key = dic.First(x => x.Value == "みかん").Key;
First() 関数の代わりに All() 関数を用いると、該当する要素すべて(集合)が返る。