C# Dictionaryの使い方|キーで検索する
C#で キー から 値 を取得するには Dictionary を使います。
Dictionary<string, string> phoneBook = new Dictionary<string, string>();
phoneBook["山田"] = "090-1111-2222";
phoneBook["佐藤"] = "080-3333-4444";
string phone = phoneBook["山田"]; // 090-1111-2222
名前で電話番号をすぐに取り出せるのが特徴です。
この記事では Dictionary の基本と List との使い分けを解説します。
目次
C# Dictionaryとは
Dictionary は
キーと値のペアを管理するコレクション
です。
- キー:検索の手がかり(名前など)
- 値:取り出したいデータ(電話番号など)
辞書のように キーを指定すると値が返ってきます。
基本構文
Dictionary<キーの型, 値の型> 変数名 = new Dictionary<キーの型, 値の型>();
例
Dictionary<string, string> phoneBook = new Dictionary<string, string>();
Dictionary<string, int> scores = new Dictionary<string, int>();
シンプルなサンプル
using System;
using System.Collections.Generic;
namespace DictionarySample
{
internal class Program
{
static void Main(string[] args)
{
Dictionary<string, string> phoneBook = new Dictionary<string, string>();
phoneBook.Add("山田", "090-1111-2222");
phoneBook.Add("佐藤", "080-3333-4444");
phoneBook.Add("田中", "070-5555-6666");
Console.WriteLine(phoneBook["山田"]);
}
}
}
実行結果
090-1111-2222
登録の2つの方法
Add メソッド
phoneBook.Add("山田", "090-1111-2222");
同じキーを Add すると例外になります。
インデックスで代入
phoneBook["山田"] = "090-1111-2222";
同じキーがあれば上書きされます。
値の取得
string phone = phoneBook["山田"];
キーが存在しないと例外になります。
安全に取得する(TryGetValue)
if (phoneBook.TryGetValue("山田", out string phone))
{
Console.WriteLine(phone);
}
else
{
Console.WriteLine("見つかりません");
}
ContainsKey で存在確認
if (phoneBook.ContainsKey("山田"))
{
string phone = phoneBook["山田"];
}
foreach で全件処理
foreach (var item in phoneBook)
{
Console.WriteLine($"{item.Key} : {item.Value}");
}
CSV読み込みと組み合わせる
Dictionary<string, string> phoneBook = new Dictionary<string, string>();
string[] lines = File.ReadAllLines("data.txt");
foreach (string line in lines)
{
string[] data = line.Split(',');
phoneBook[data[0]] = data[1]; // 名前 → 電話番号
}
string phone = phoneBook["山田"];
Dictionary と List + クラスの違い
| 項目 | Dictionary | List + クラス |
|---|---|---|
| 検索 | キーで即取得 | foreach で検索 |
| 拡張 | キー・値の2つだけ | プロパティを自由に追加 |
| 向いている用途 | 名前→電話番号のみ | 住所・メールなど追加する |
List + クラスが向く場合
- 住所・メール・メモなど項目を増やしたい
- オブジェクト指向の学習
- データの形が複雑
Dictionaryが向く場合
- キーで検索するだけ
- シンプルな名前→値の対応
よくあるエラー
存在しないキーでアクセス
string phone = phoneBook["存在しない名前"]; // 例外
対策
TryGetValue や ContainsKey を使う。
using の忘れ
using System.Collections.Generic;
まとめ
C#の Dictionary は
キーから値をすぐに取り出せる
コレクションです。
主な用途
- 名前→電話番号
- 商品名→価格
- ID→オブジェクト
項目を増やしたい場合は List + クラス が向いています。
関連記事
前の記事
C# Listの使い方|複数データを管理する
では List の基本を解説しています。
次の記事
C# クラスの作り方|データの形を定義する
では 拡張しやすいデータの形をクラスで定義する方法を解説します。
実践
WinFormsで作る電話帳アプリ(Listで管理する版)
では List + クラスで電話帳アプリを作る方法を解説します。
訪問数 4 回, 今日の訪問数 4回



ディスカッション
コメント一覧
まだ、コメントがありません