本文へスキップ
BecomeCoder

C#文法コース · 第3章 コレクション · レッスン24

Dictionary

ブラウザで完結

導入

「社員番号から名前を引く」「商品コードから価格を引く」——キーと値のペアで管理し、キーから高速に値を取り出すのがDictionary<TKey, TValue>です。

図解

flowchart LR
    K1["キー: &quot;apple&quot;"] --> V1["値: 150"]
    K2["キー: &quot;banana&quot;"] --> V2["値: 100"]
    Q["prices[&quot;apple&quot;]"] -.->|キーで即座に取得| V1

サンプル

// Dictionary<キーの型, 値の型>
Dictionary<string, int> prices = new();

prices["apple"] = 150;      // キー "apple" に 150 を対応づける
prices["banana"] = 100;

Console.WriteLine(prices["apple"]);   // 150  ← キーで取り出す

// 存在しないキーを読むと例外。TryGetValue が安全
if (prices.TryGetValue("grape", out int p))
    Console.WriteLine(p);
else
    Console.WriteLine("その商品はありません");   // こちらが出力される

// 全ペアを回す
foreach (var pair in prices)
    Console.WriteLine($"{pair.Key}: {pair.Value}円");
  • Dictionary<キー型, 値型>で作る
  • 辞書[キー] = 値;で登録、辞書[キー]で取得
  • 存在しないキーの読み取りは例外になるためTryGetValueが安全
  • foreachでは.Key.Valueで各ペアを取り出す

演習

Dictionary<string, int> stock = new();
stock["ペン"] = 50;
stock["ノート"] = 30;

// TODO: TryGetValue を使い、"ノート" の在庫を "ノートの在庫は30" の形式で出力してください
___
  • 期待される出力: ノートの在庫は30
ヒント1を見る

stock.TryGetValue("ノート", out int n)nを使います

ヒント2を見る

if (stock.TryGetValue("ノート", out int n)) Console.WriteLine($"ノートの在庫は{n}");

まとめ

  • Dictionary<TKey, TValue>はキーと値のペアを管理する
  • キーから高速に値を引ける
  • 存在しないキーの読み取りはTryGetValueで安全に

次回: 重複を許さない集合HashSetです。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。