#16 C#で学ぶ辞書型(マップ)の基本

C#で名前と値の組み合わせを扱うには、Dictionaryというクラスを使います。この記事では、C#における辞書(連想配列)の使い方と、実務でよく使う操作を解説します。

Dictionaryを作ってみる

var scores = new Dictionary<string, int>();
scores["太郎"] = 90;
scores["花子"] = 85;

Dictionary<TKey, TValue>のように、キーと値それぞれの型を山かっこの中で指定します。上の例では、キーが文字列(string)、値が整数(int)の辞書を作っています。

値を取り出す

存在しないキーで直接アクセスすると例外が発生するため、TryGetValueという安全な取り出し方がよく使われます。

if (scores.TryGetValue("太郎", out int score)) {
    Console.WriteLine(score);
} else {
    Console.WriteLine("見つかりませんでした");
}

キーが存在するか確認する

値そのものは不要で、キーの有無だけ調べたい場合はContainsKeyを使います。

if (scores.ContainsKey("太郎")) {
    Console.WriteLine("太郎さんのデータがあります");
}

削除したい場合はRemove("太郎")を呼び出すだけで、キーと値のペアがまとめて取り除かれます。

全てのキーと値を順に処理する

foreach (var pair in scores) {
    Console.WriteLine($"{pair.Key}: {pair.Value}");
}

pair.Key・pair.Valueのほかに、C# 7.0以降ではforeach (var (name, score) in scores)のように、キーと値を直接分解して受け取る書き方も使えます。

C#ならではの注意点

TryGetValueは、値の取得に成功したかどうかをboolで返しつつ、outというキーワードを使って結果を同時に受け取れる、C#らしい書き方です。最初は独特に感じるかもしれませんが、安全にキーの存在確認と値の取得を同時に行える便利な仕組みです。似た名前のクラスにSortedDictionaryもあり、こちらはキーの順序が自動的に整列される点が異なります。用途に応じて使い分けましょう。

まとめ

C#の辞書はDictionaryが基本で、TryGetValueを使うと安全に値を取り出せます。キーの有無だけを調べたいときはContainsKey、順序が必要ならSortedDictionaryも検討しつつ、積極的に活用しましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

C#をもっと学びたい方には「確かな力が身につくC#「超」入門 第2版」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本