月ノ書

C#のDictionaryを完全解説|キーと値の使い方とList・Setとの違い

この記事でわかること
  • C#における Dictionary の基本的な考え方がわかる
  • キーと値を使ったデータ管理の仕組みを理解できる
  • List や HashSet との違いがはっきりわかる
  • Dictionary の基本操作と繰り返し処理の使い方が身につく

Dictionaryとは何か

Dictionary は、キーと値をセットで管理するコレクションです

Dictionary<string, int> scores = new Dictionary<string, int>();

この場合

という組み合わせになります

最大の特徴は
「キーを指定すると、対応する値をすぐに取り出せる」
という点です

List・Set・Dictionaryの違い

ここで一度、これまでのコレクションと整理しておきます

コレクション特徴主な用途
List順番あり・重複可一覧データ
HashSet順番なし・重複不可一意性チェック
Dictionaryキーと値紐づけ管理

Dictionary は
「名前から点数を引く」
「IDから情報を取得する」
といった用途に向いています

Dictionaryの宣言と初期化

基本的な宣言は次の通りです

Dictionary<string, int> scores = new Dictionary<string, int>();

最初から値を入れることもできます

Dictionary<string, int> scores = new Dictionary<string, int>
{
    { "Alice", 90 },
    { "Bob", 80 }
};

この書き方はとてもよく使われます

要素を追加する

要素の追加はキーと値をセットで行います

scores.Add("Charlie", 85);

キーは 重複できません
同じキーを追加しようとするとエラーになります

値を取り出す

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

int aliceScore = scores["Alice"];

ただし、存在しないキーを指定すると例外が発生します
そのため、安全な方法として ContainsKey がよく使われます

if (scores.ContainsKey("Alice"))
{
    int score = scores["Alice"];
}

値を更新する

既に存在するキーの場合は、代入で値を更新できます

scores["Alice"] = 95;

Add と違い、こちらはエラーにならず上書きされます

要素を削除する

不要になったデータはキーを指定して削除します

scores.Remove("Bob");

List のようにインデックス指定はできません
あくまで「キー」で操作するのが Dictionary です

繰り返し処理とDictionary

Dictionary も foreach で簡単に回せます

foreach (var item in scores)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

item.Keyitem.Value のセットで取り出せるのが特徴です
順番は保証されない点には注意が必要です

Dictionaryが向いている場面

Dictionary は次のようなケースで特に便利です

Dictionary<string, string> settings = new Dictionary<string, string>
{
    { "theme", "dark" },
    { "language", "ja" }
};

このような「対応表」を扱うときに、真価を発揮します

Dictionaryを使うときの注意点

「順番が大事」なら List
「重複させたくない」なら HashSet
「紐づけたい」なら Dictionary

この感覚が持てると、コレクション選びで迷わなくなります

まとめ

学習進捗