Dictionaryクラスのメソッド

Dictionaryクラスの操作

ここではよく使われるDictionaryクラスのメソッドを紹介します。
Dictionaryクラスについての基本的な事柄はDictionaryクラスを参照してください。

Add(要素の追加)

Dictionaryに要素を追加するにはAddメソッドを使用します。


//空のDictionaryを作成
var dct = new Dictionary<string, int>();

//要素を追加
dct.Add("aaa", 5);
dct.Add("bbb", 7);
dct.Add("ccc", 9);

foreach (var kvp in dct)
    Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value);
aaa: 5
bbb: 7
ccc: 9

第一引数にはKeyとなる値、第二引数にはValueとなる値を指定します。
それぞれの値のデータ型は追加するDictionaryクラスのデータ型に合わせます。

Addメソッドは「要素の追加」の動作しかできず、既存の値を上書きすることはできません。
すでに存在するKeyを指定するとエラーになります。


var dct = new Dictionary<string, int>();

dct.Add("aaa", 5);

//エラー
dct.Add("aaa", 10);

//これはOK
dct["aaa"] = 10;

Remove(要素の削除)

要素の削除にはRemoveメソッドを使用します。


var dct = new Dictionary<string, int>() {
    { "aaa", 5 },
    { "bbb", 7 },
    { "ccc", 9 },
};

//要素を削除
bool bo1 = dct.Remove("bbb"); //true
bool bo2 = dct.Remove("zzz"); //false

foreach (var kvp in dct)
    Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value);
aaa: 5
ccc: 9

Removeメソッドは削除に成功した場合は真を、要素が見つからなかった場合は偽を返します。

Clear(要素をすべて削除)

Dictionaryクラスの要素をすべて削除するにはClearメソッドを使用します。


var dct = new Dictionary<string, int>() {
    { "aaa", 5 },
    { "bbb", 7 },
    { "ccc", 9 },
};

//要素をすべて削除
dct.Clear();

Console.WriteLine(dct.Count); //0

ContainsKey(指定のKeyの存在判定)

Dictionary中に指定のKeyを持つ要素が存在するかを判定するにはContainsKeyメソッドを使用します。


var dct = new Dictionary<string, int>() {
    { "aaa", 5 },
    { "bbb", 7 },
    { "ccc", 9 },
};

bool bo1 = dct.ContainsKey("aaa"); //true
bool bo2 = dct.ContainsKey("zzz"); //false

ContainsValue(指定のValueの存在判定)

Dictionary中に指定のValueを持つ要素が存在するかを判定するにはContainsValueメソッドを使用します。


var dct = new Dictionary<string, int>() {
    { "aaa", 5 },
    { "bbb", 7 },
    { "ccc", 9 },
};

bool bo1 = dct.ContainsValue(5); //true
bool bo2 = dct.ContainsValue(999); //false

TryGetValue(指定のKeyのValueを取得)

Dictionary内に指定のKeyを持つ要素が存在する場合にその値を得るにはTryGetValueメソッドを使用します。


var dct = new Dictionary<string, int>() {
    { "aaa", 5 },
    { "bbb", 7 },
    { "ccc", 9 },
};

int tryGetValue1;
int tryGetValue2;

bool bo1 = dct.TryGetValue("aaa", out tryGetValue1); //true
bool bo2 = dct.TryGetValue("zzz", out tryGetValue2); //false

Console.WriteLine(tryGetValue1);
Console.WriteLine(tryGetValue2);
5
0

TryGetValueメソッドの第二引数はoutキーワードと共に指定します。
Dictionary内に第一引数で指定したKeyが存在する場合は第二引数に値が格納されます。
Keyが存在しない場合は規定値が格納されます。

戻り値はKeyが存在する場合は真、存在しない場合は偽を返します。