#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿