Day11 後半のゴール
Day11 後半では、前半で学んだ Dictionary<TKey, TValue> / Add / Remove / ContainsKey を使いながら、 実際に「動くアプリケーション」として 電話帳 と 学生成績管理 を組み立てていきます。
前半は“仕組みの理解”が中心でしたが、後半では 実務レベルの使い方・初心者がつまずきやすいポイント・コードの流れ を丁寧に深掘りしていきます。
電話帳を作る
電話帳は Dictionary の最適な題材です
電話帳は「名前 → 電話番号」という構造で成り立っています。 これはまさに Dictionary の得意分野で、キー(名前)から値(電話番号)を高速に取り出せます。
Dictionary<string, string> phoneBook = new Dictionary<string, string>();
phoneBook.Add("Taro", "090-1111-2222");
phoneBook.Add("Hanako", "080-3333-4444");
phoneBook.Add("Ken", "070-5555-6666");
C#深掘りポイント
Add は「キーが重複しているとエラーになる」点が重要です。 同じ名前を2回登録しようとすると例外が発生します。 そのため、実務では ContainsKey とセットで使う のが安全です。
電話番号を取り出す(存在確認付き)
ContainsKey を使った安全なアクセス
if (phoneBook.ContainsKey("Taro"))
{
Console.WriteLine("Taro の番号: " + phoneBook["Taro"]);
}
else
{
Console.WriteLine("Taro は登録されていません");
}
C#深掘りポイント
Dictionary の最も多いエラーは「存在しないキーにアクセスする」ことです。 ContainsKey を使うことで、例外を防ぎ、安全なコードになります。
電話帳から削除する Remove
phoneBook.Remove("Hanako");
C#削除後に "Hanako" を取り出そうとするとエラーになるため、 削除前にも ContainsKey を使うのが理想です。
電話帳の完成形
Dictionary<string, string> phoneBook = new Dictionary<string, string>();
phoneBook.Add("Taro", "090-1111-2222");
phoneBook.Add("Hanako", "080-3333-4444");
phoneBook.Add("Ken", "070-5555-6666");
if (phoneBook.ContainsKey("Taro"))
{
Console.WriteLine("Taro の番号: " + phoneBook["Taro"]);
}
phoneBook.Remove("Hanako");
Console.WriteLine("現在の電話帳:");
foreach (var entry in phoneBook)
{
Console.WriteLine(entry.Key + " : " + entry.Value);
}
C#深掘りポイント
foreach で回すときは entry.Key と entry.Value を使います。 Dictionary は「キーと値のペア」を扱うため、この2つをセットで理解することが重要です。
学生成績管理を作る
名前 → 点数の構造で管理する
学生成績管理では、次のようなデータ構造が自然です。
Dictionary<string, int> scores = new Dictionary<string, int>();
C#名前(string)→ 点数(int)という形で管理します。
成績を登録する Add
scores.Add("Taro", 85);
scores.Add("Hanako", 92);
scores.Add("Ken", 76);
C#深掘りポイント
Add は「キーが重複するとエラー」なので、 同じ名前を登録しないよう ContainsKey を使うのが安全です。
成績を取り出す(存在確認付き)
if (scores.ContainsKey("Hanako"))
{
Console.WriteLine("Hanako の点数: " + scores["Hanako"]);
}
C#深掘りポイント
点数を取り出すときは「キーが存在するか」を必ず確認する習慣をつけてください。 これだけで Dictionary のエラーの大半を防げます。
成績を削除する Remove
scores.Remove("Ken");
C#削除後に "Ken" を取り出そうとすると例外が発生するため、 Remove 前にも ContainsKey を使うのが理想です。
学生成績管理の完成形
Dictionary<string, int> scores = new Dictionary<string, int>();
scores.Add("Taro", 85);
scores.Add("Hanako", 92);
scores.Add("Ken", 76);
if (scores.ContainsKey("Hanako"))
{
Console.WriteLine("Hanako の点数: " + scores["Hanako"]);
}
scores.Remove("Ken");
Console.WriteLine("成績一覧:");
foreach (var entry in scores)
{
Console.WriteLine(entry.Key + " : " + entry.Value + "点");
}
C#深掘りポイント
Dictionary は「キーで高速アクセスできる」ため、 成績管理のような「検索が多い処理」に非常に向いています。
Day11 後半のまとめ
Day11 後半では、Dictionary を使った実用的なプログラムを作りました。
電話帳 → 名前 → 電話番号 学生成績管理 → 名前 → 点数
どちらも Dictionary の特性である 「キーで高速アクセス」「キーは重複不可」「存在確認が重要」 を自然に体験できる題材です。
