今回のテーマ
Contents
こんばんは、かっぱちゃんです。
今回は下記のテーマについての記事を書いていこうと思います。
今回のテーマ
Dictionaryの使い方について解説。
今回はディクショナリーの使い方を解説します。リストや配列程、使う機会はないかもしれませんが、便利なので覚えていきましょう!

他のLinqの記事についてはこちら
-
-
合わせて読みたいC# Linqを勉強するならこれだけは読んでほしいオススメの本3選 オススメの参考書
C#を学ぶならガチで読んで欲しい本はこちら C#を勉強するためのオススメの本を紹介Contents1 C#を勉強するためのオススメの本を紹介1.1 C#の基礎を学ぶなら「やさしいC#」1.2 C#の全 ...
続きを見る
C#のLinqをさらに学びたい方へ
C#のLinqを理解して頂くために参考書を執筆致しました!
Linqの演習問題はこちらの参考書に載せているので、問題を解いて理解を深めたい方はこちらの参考書チェックしてください!
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
Dictionaryの初期化方法
まずはDictionaryの初期化方法を見ていきましょう。2パターンあるので、好きな方を選んでください。
今回の例では、ロボット名がキーで、それに対応する要素名が作成者とします。
初期化方法1
1 2 3 4 5 6 |
var RobotDict = new Dictionary<string, string>(){ {"Rockman","Dr Light" }, {"Roll","Dr Light" }, {"Airman","Dr Wily" }, {"Quickman","Dr Wily" } }; |
初期化方法2
1 2 3 4 5 6 |
var RobotDict = new Dictionary<string, string>(){ ["Rockman"] = "Dr Light", ["Roll"] = "Dr Light", ["Airman"] = "Dr Wily", ["Quickman"] = "Dr Wily" }; |
このブログでは、初期化方法2を使っていきますね。
Dictionaryの要素の追加方法
要素の追加方法も2つあります。
要素の追加方法1
1 |
RobotDict["Iceman"] = "Dr Wily"; |
要素の追加方法2
1 |
RobotDict.Add("Iceman", "Dr Wily"); |
要素の追加方法1では、既にキーが存在していた場合は、値が上書きされます。
追加方法2では、既にキーが存在していた場合、ArgumentException例外が発生するので注意が必要です。
このブログでは、追加方法1を使っていきます。
Dictionaryから要素を取り出す方法
続けて、要素の取り出し方です。下記のようにすれば、キーに対応した値を取り出すことができます。
1 |
var maker = RobotDict["Rockman"]; |
指定したキーが無かった場合はKeyNotFoundException例外が発生するので、ContainsKeyメソッドを使うことで、キーが存在するかを確認することをおすすめします。
1 2 3 4 |
if (RobotDict.ContainsKey("Rockman")) { var maker = RobotDict["Rockman"]; } |
Dictionaryから要素を削除する方法
要素の削除方法を解説します。下記のようにRemoveメソッドを使用することで削除できます。
1 |
var result = RobotDict.Remove("Rockman"); |
返り値はbool型で削除出来た場合はtrue、出来なかった場合はfalseを返します。
Dictionaryから全ての要素を取り出す方法
全ての要素を取り出す場合はforeachを使いましょう。キーの値はKeyを指定し、それに対応する要素の値はValueを指定します。
今までの処理を総まとめしたソースコードを記述します。
Dictionaryの使い方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System; using System.Collections.Generic; namespace Dictionary { class Program { static void Main(string[] args) { var RobotDict = new Dictionary<string, string>() { ["Rockman"] = "Dr Light", ["Roll"] = "Dr Light", ["Airman"] = "Dr Wily", ["Quickman"] = "Dr Wily" }; RobotDict["Iceman"] = "Dr Wily"; var maker = RobotDict["Rockman"]; Console.WriteLine(maker); RobotDict.Remove("Rockman"); foreach(var item in RobotDict) { Console.WriteLine(item.Key + ":" + item.Value); } } } } |
result
Dr Light
Roll:Dr Light
Airman:Dr Wily
Quickman:Dr Wily
Iceman:Dr Wily
全ての要素を取り出す時にforeachを使えるということは、Linqも使用することができます。

Dictionary型にLinqを使用した例
最後にLinqを使ってみた例を二つ紹介します。
行いたい処理
文字列の長さが7以上のロボット名と作成者を出力する。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System; using System.Collections.Generic; using System.Linq; namespace Dictionary { class Program { static void Main(string[] args) { var RobotDict = new Dictionary<string, string>() { ["Rockman"] = "Dr Light", ["Roll"] = "Dr Light", ["Airman"] = "Dr Wily", ["Quickman"] = "Dr Wily", ["Iceman"] = "Dr Wily", ["Fireman"] = "Dr Wily" }; RobotDict = RobotDict.Where(x => x.Key.Length >= 7).ToDictionary(robot => robot.Key,robot => robot.Value); foreach(var item in RobotDict) { Console.WriteLine(item.Key + ":" + item.Value); } } } } |
result
Rockman:Dr Light
Quickman:Dr Wily
Fireman:Dr Wily
Linqを使用して、Whereで抽出した後にToDirectoryで再度、Directory型に戻しています。
上記のようにToDirectory内でそれぞれKeyとValueを指定することでDirectory型を再度作ることができます。
LinqのWhereについては下記の記事に書いています。
CHECK
-
-
C# Linqはとても便利なので使い方を覚えよう。Selectメソッド、Whereメソッドを解説します。
C#を学ぶならガチで読んで欲しい本はこちら 今回のテーマContents1 今回のテーマ2 Linqを使用する場面3 Linqメソッドの解説の流れ4 Selectメソッドの使い方5 Whereメソッド ...
続きを見る
二つ目の例を見てみましょう。
行いたい処理
作成者がワイリーのロボット名を出力する。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
using System; using System.Collections.Generic; using System.Linq; namespace Dictionary { class Program { static void Main(string[] args) { var RobotDict = new Dictionary<string, string>() { ["Rockman"] = "Dr Light", ["Roll"] = "Dr Light", ["Airman"] = "Dr Wily", ["Quickman"] = "Dr Wily", ["Iceman"] = "Dr Wily", ["Fireman"] = "Dr Wily" }; var RobotList = RobotDict.Where(x => x.Value == "Dr Wily").Select(x => x.Key).ToList(); foreach(var item in RobotList) { Console.WriteLine(item); } } } } |
result
Airman
Quickman
Iceman
Fireman
今回の例はロボット名の出力のみだったので、リストに変換して実現しました。
もちろん、Dictionary型に変換し、出力することもできます。時と場合に応じて、使い分けましょう。
まとめ
今回はDictionary型について解説しました。
二つの要素を対応付けて管理したい場合などにとても強力ないないので、ぜひ覚えてください。
今回の記事では、Dictionary型について紹介しきれていないので、別記事でさらに掘り下げて解説していきたいと思います。

他のLinqの記事についてはこちら
C#のLinqをさらに学びたい方へ
C#のLinqを理解して頂くために参考書を執筆致しました!
Linqの演習問題はこちらの参考書に載せているので、問題を解いて理解を深めたい方はこちらの参考書チェックしてください!
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
新しいサイト作りました。アニメのまとめサイトです。
映画ドキュメンタリ版のブログはこちら
レインボーまとめサイト(映画ドキュメンタリー版)
ポケモンまとめブログはこちら
レインボーまとめサイト(ポケモン版)