【C#入門】Dictionaryの使い方|初期化・TryGetValue・ループ処理まで解説

  • 2026.04.17
       
【C#入門】Dictionaryの使い方|初期化・TryGetValue・ループ処理まで解説

プログラミングを開発する際に、複数のデータをまとめて取り扱いケースは多々発生すると思います。
データをひとまとめにする方法はいくつか存在しますが、その中でも特定の項目との関連付けに強いのが、Dictionaryクラスを使用する方法です。

今回は、C#の Dictionaryクラスを使用する具体的な方法について解説していきたいと思います。

Dictionaryとは?

Dictionaryは、配列やListと同様、複数のデータを1つのまとまりとして扱うためのオブジェクトの1つです。
配列やListがインデックスを使用して要素を管理するのに対し、Dictionaryは Key (キー) を Value (値) に紐付けて1つの要素として管理します。

Dictionary内の各要素にアクセスする際は、値に紐付けされたキーを使用してデータを取得します。
キーは重複不可となっており、一意であることが保証されているため、関連する項目ごとにデータを振り分けたい場合などに活用することができます。

Dictionaryを初期化する方法とは?

Dictionaryの初期化方法は、主に初期値の設定を必要とするか否かで方法が変わります。

初期値の設定が必要ない場合は、以下の構文で空の Dictionaryを作成することができます。

C#
Dictionary< Keyの型, Valueの型 > オブジェクト名 = new Dictionary< Keyの型, Valueの型 >()

宣言と同時に初期値を設定したい場合は、以下の方法で設定が可能です。

C#
Dictionary<string, int> sampleDic = new Dictionary<string, int>(){
    {"first", 1},
    {"second", 2},
    {"third", 3},
};

Dictionaryの基本操作:データの追加・取得・削除

Dictionaryの各操作は、[](インデクサー)の使用、もしくは対応するメソッドの使用によって行うことができます。
それぞれの操作方法について見ていきましょう。

要素の追加と重複エラーの回避

Dictionaryで要素を追加する方法は、以下の3つがあります。

  • [](インデクサー)を使用する方法
  • Addメソッドを使用する方法
  • TryAddメソッドを使用する方法
C#
// インデクサーで追加
sampleDic["first"] = 1;

// Addメソッドで追加
sampleDic.Add("second", 2);

// TryAddメソッドで追加
sampleDic.TryAdd("third", 3);

使用する方法によって、Keyが重複する場合の挙動が異なるため、状況に応じた使い分けが重要となります。

  • []の場合…値の上書き
  • Addメソッド…例外が発生
  • TryAddメソッド…戻り値でfalseを返却

重複時に値を上書きしたい場合は []、上書きはせずに例外処理を行う場合は Addメソッド、どちらも行わずに処理をスルーしたい場合は TryAddメソッドが適しています。

要素の取得

値の取得方法は、[] を使用する方法と、TryGetValueメソッドを使用する方法の2通りがあります。

C#
Dictionary<string, int> sampleDic = new Dictionary<string, int>(){
    {"first", 1},
    {"second", 2},
    {"third", 3},
};

// インデクサーを使用する方法
Console.WriteLine(sampleDic["first"]);

// TryGetValueを使用する方法
if(sampleDic.TryGetValue("second", out int value)){

要素の削除

特定の要素のみを削除する場合は Removeメソッド、全ての要素を削除する場合は Clear メソッドで削除が可能です。

C#
Dictionary<string, int> sampleDic = new Dictionary<string, int>(){
    {"first", 1},
    {"second", 2},
    {"third", 3},
};

// 特定の要素のみを削除
sampleDic.Remove("first");

// すべての要素を削除
sampleDic.Clear();

Dictionaryのループ処理(foreach)

オブジェクト内の全ての要素にアクセスして処理を行いたい場合は、ループ処理を使うと効率的にアクセスすることができます。
ただし、キーと値の両方を使用するケースや、どちらか片方のみを使用するケース、条件の絞り込みや加工などの複雑な処理を合わせて行いたいケースなど、状況によって記述方法は異なります。

それぞれの方法について、順に確認してみましょう。

KeyValuePairを使って取得する

キーと値の両方を取得する場合は、KeyValuePairを使用して取得するのが効率的です。

C#
Dictionary<string, int> sampleDic = new Dictionary<string, int>(){
    {"first", 1},
    {"second", 2},
    {"third", 3},
};

foreach (KeyValuePair<string, int> kvp in sampleDic){
    Console.WriteLine($"{kvp.Key}:{kvp.Value}");
}

Keyプロパティと Valueプロパティを使用することで、キーと値をそれぞれ取得することができます。

Keyのみを取得する

キーのみを取得する場合は、以下の方法で取得可能です。

C#
foreach (var key in sampleDic.Keys){
    Console.WriteLine(key);
}

Valueのみを取得する

値のみを取得する場合は、以下の方法で取得可能です。

C#
foreach (var value in sampleDic.Values){
    Console.WriteLine(value);
}

LINQを使って取得する

LINQとループ処理を組み合わせると、条件の絞り込みや要素の加工といった処理を容易に実行することができます。

例えば以下は、値が奇数である要素のみを絞り込みし、その結果をループ処理で表示する例となります。

C#
Dictionary<string, int> sampleDic = new Dictionary<string, int>(){
    {"first", 1},
    {"second", 2},
    {"third", 3},
};

var filterdDic = sampleDic.Where(x => x.Value % 2 == 1);

foreach (var value in filterdDic){
    Console.WriteLine(value);
}

Whereメソッドで事前に要素を絞り込むことにより、コードを簡潔に記述できるだけでなく、処理内容を明確化できるメリットもあります。
実行する処理内容に合わせて、メソッドを使い分けていきましょう。

まとめ

今回は、C#で Dictionaryを使用する方法について解説しました。
Dictionaryは、配列やListと合わせてよく使用される機能の1つですので、使い方をしっかりと把握し、実際の開発に役立てられるようにしておきましょう。

C#の勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、C#に限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Programmingカテゴリの最新記事