C# | ゼロからはじめるプログラミング、30日で基礎を学ぶC#:基本機能を身に付ける - Day11:Dictionary

C# 30日で身につけるC#
スポンサーリンク
スポンサーリンク

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.Keyentry.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 の特性である 「キーで高速アクセス」「キーは重複不可」「存在確認が重要」 を自然に体験できる題材です。

タイトルとURLをコピーしました