C#のDictionaryを完全解説|キーと値の使い方とList・Setとの違い
この記事でわかること
- C#における Dictionary の基本的な考え方がわかる
- キーと値を使ったデータ管理の仕組みを理解できる
- List や HashSet との違いがはっきりわかる
- Dictionary の基本操作と繰り返し処理の使い方が身につく
Dictionaryとは何か
Dictionary は、キーと値をセットで管理するコレクションです
Dictionary<string, int> scores = new Dictionary<string, int>();この場合
- キー: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.Key と item.Value のセットで取り出せるのが特徴です
順番は保証されない点には注意が必要です
Dictionaryが向いている場面
Dictionary は次のようなケースで特に便利です
- IDや名前からデータを引きたい
- 設定値をキーごとに管理したい
- 高速に検索したい
Dictionary<string, string> settings = new Dictionary<string, string>
{
{ "theme", "dark" },
{ "language", "ja" }
};このような「対応表」を扱うときに、真価を発揮します
Dictionaryを使うときの注意点
- キーは一意である必要がある
- 順番に意味を持たせる用途には不向き
- 存在チェックを怠ると例外が出やすい
「順番が大事」なら List
「重複させたくない」なら HashSet
「紐づけたい」なら Dictionary
この感覚が持てると、コレクション選びで迷わなくなります
まとめ
- Dictionary はキーと値をセットで管理するコレクション
- キーは重複できず、高速に検索できる
- Add・Remove・ContainsKey が基本操作
- foreach でキーと値をまとめて扱える
- 紐づけ管理が必要な場面で最適