C#

【C#】Dictionaryの初期化はこれでOK!初期化の方法や基本を簡単解説

C#のDictionaryを簡単に初期化する方法が知りたい!

こういった疑問に答えます。

 

こんにちは、リバティエンジニアのFUNA(フナ)です。

現役でフリーランスのエンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

 

この記事はこんな方におすすめ

  • C#のDictionaryクラスを簡単に初期化したい方
  • C#Dictionaryの基本的な使い方が知りたい方

 

今回はC#の「dictionary」について初期化の仕方などの基本から、要素の取り出しや存在確認なども解説します。

 



 

C#でのdictionaryとは?

C#のDictionaryでは、

  • Key(キー): インデックス番号の代わりに使われる名前
  • Value(バリュー) : 値

この2つをセットで扱うことができます。

 

「Key」と「Value」をセットで扱う配列のことを「連想配列」と呼びます。

C#では連想配列を扱うためのクラスが「Dictionaryクラス」になるというわけです。

DictionaryクラスではKeyを使うことでValueの値を取得することができます。

 

Dictionaryを扱う上で注意してほしいことが一つだけあります。

それは、「Key」の値を重複させることはできない。ということです。

これだけは覚えておいてください。

 

【C#】DictionaryとListコレクションの違い

ここまでの話でDictionaryとListコレクションの違いがいまいちわからない。という方が出てくるかと思います。

そこでここからは、DictionaryとListコレクションの違いについてのお話をします。

 

C# Listコレクションについて

少し前にListコレクションについてお話ししたのを覚えていますでしょうか。
忘れかけている方は再度確認しておくといいかもです。

>> 【C#】 Listに要素を追加/挿入するには?

>> 【C#】 Listの要素を削除する方法

 

ListとDictionaryの違い

では早速、C#でのListとDictionaryは何が違うのかを見ていきましょう。

 

まずListコレクションですが、こちらは「インデックス番号」を使って要素の値を取得します。

それに対して、Dictionaryでは先程もお話したとおり「Key」の値を使って「Value」の値を取得するので、数値ではなく文字列などを指定することで、セットの値を取得することができます。

 

管理するものが、「項目」とそれに対応した「値」というように、セットでデータを取り扱いたい場合に便利です。

 

【C#】Dictionaryの使い方

ここまでで、Dictoinaryは「Key」と「Value」で管理する事ができるもの。ということがわかりました。

では早速使い方を見ていきましょう。

 

Dictionaryの定義のしかた

Dictionaryは以下のように宣言して定義することができます。

using System.Collections.Generic;
Dictionary<string, string> dictionary = new Dictionary<string, string>();

 

Dictionaryクラスを使用するには、usingを使って「System.Collections.Generic」クラスを呼び出しておく必要がありますので、お忘れなく。

usingについては下の記事を参考にしてみてください。

>> 【C#】 usingステートメントとは?サンプルコードで解説

 

またDictionaryは以下のように記述することもできます。

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

 

「var」とはなにか簡単に説明すると、「型推論」です。

明らかに型がなにかわかるときは自動的に(暗黙的に)型を変換してくれます。

 

Dictionaryに要素を追加する

次にDictionaryに実際に要素を追加してみましょう。

方法としては2つあります。
1. 初期化の時に追加する方法
2. Addメソッドを使う方法

順番に見ていきましょう。

 

初期化の時に追加する方法

Dictionaryは宣言時に初期化することもできます。

サンプルコードを御覧ください。

var オブジェクト名 = new Dictionary<Keyの型名, Valueの型名>()
{
  {Key0, Value0},
  {Key1, Value1},
  ・・・・・・
};

 

このように、初期化(new)のタイミングで値を設定して初期化することもできます。

Addメソッドを使う方法

C# のDictionaryクラスにはAddというメソッドがあり、これを使って要素を追加することもできます。

Dictionary<string, string> dictionary = new Dictionary<string, string>();

dictionary.Add("01", "北海道");
dictionary.Add("02", "青森県");
dictionary.Add("03", "岩手県");

 

このようにすることでキーと値を設定できます。

注意してほしいのが、指定したKeyの要素が既に存在する場合には例外が発生することです。

 

これを回避する方法として、ContainsKeyメソッドで要素の存在を確認してから追加すると安全ですね。

 

要素の取得

例)Key=02のValue値を取得する

【方法1】

string name = dictionary["02"];

【方法2】

string name;
bool b = dictionary.TryGetValue("02", out name);

※方法1の場合、指定したKeyが無い時は例外が発生します。例外を発生させたくない場合は、dic.ContainsKeyメソッドでキーが存在の有無を判定してから要素を取得してください。

 

要素の更新

例)Key=01のValueを「ほっかいどう」に更新する
dictionary["01"] = "ほっかいどう";
 

要素の削除

例)Key値="02"の要素を削除する

dictionary.Remove("02");

例)全ての要素を削除する

dictionary.Clear();
 

Key値、Value値が存在するかどうか確認する

例)Key="01"が存在するかどうか確認する

bool b = dictionary.ContainsKey("02");

例)Value値="北海道"が存在するかどうか確認する

bool b = dictionary.ContainsValue("北海道");
 

要素数の取得

例)要素数を取得する

int cnt = dictionary.Count;
 

Dictionary型を別の型に変換する

例)Dictionary型をList型に変換する

List<KeyValuePair<string, string>> list = dictionary.ToList();

※ KeyValuePair型のListになります。

例)Dictionary型を配列に変換する

KeyValuePair<string, string>[] arr = dictionary.ToArray();

※KeyValuePair型の配列になります。

 

foreachで要素を取り出す

Dictionary型の中身を1つ1つ取り出して処理したい場合は、foreach文が便利です。

例)foreachで要素を取り出す

// 全要素をループ
foreach(string str in dictionary)
{ 
    Console.WriteLine(str);
}
 

【C#】Dictionaryのまとめ

今回は、C#でのDictionaryクラスの使い方を解説しました。

キーと値のセットで保持できるので、使い所が多くかなり便利だと思います。

 

調べて学習したあとは必ず自分の環境でもアレンジして動作確認して動かしてみることをおすすめします。

 

他にもC# の記事を出しているので良かったら見てみてください。

>> 【C#】プロパティとは?利用するメリットはあるのか。

>> 【結論】未経験でプログラミングの独学はぜんぜん可能

>> 【C#】 usingステートメントとは?サンプルコードで解説

 

フリーランスに挑戦!準備は必要ない。~エンジニア・プログラマ編~

続きを見る

 

関連記事

CSSアニメーションを簡単に実装!コピペOKのサンプルコード付き【HTML/CSS】

CSSのみで実装することのできるアニメーションの方法を解説します。サンプルコード付きでわかりやすく、コピペでも簡単に実装できるようになっていますので、実際に動かして試してみてください。

【HTML/CSS】z-indexで重なり順を指定。効かない時の対処法はコレ!

今回はHTML/CSSで要素の重なり順を指定する方法として、CSSプロパティz-indexについて初心者の方でも分かりやすく解説します。設定しても上手く効かない時の対処法も紹介しています。

【コピペOK】HTMLにCSSを埋め込み適用させるサンプルをご紹介

HTMLにCSSを埋め込み、適用させる方法についてサンプルコードを元にご紹介します。初心者の方でもわかりやすいようにコピペでも簡単に実装できるようにまとめていますので、どんどん使ってください。

【HTML/CSS】コピペでOK!チェックマークを作る簡単な方法

こんにちは、リバティエンジニア[?]のFUNA(フナ)です。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。   この記事はこんな方におすすめ HTM ...

Pythonで繰り返し処理を実装する~for文, while文~

目次Pythonでの繰り返し処理についてwhile文の基本特定の状態になるまで繰り返す[ サンプルコード ]永遠に繰り返す [ サンプルコード ]for文の基本リストを扱う場合のfor文ディクショナリ ...

 

Kindle Unlimitedで無料で本が読める

 

Kindle Unlimitedを無料で試す

 

なら最初の30日間は無料でコーディング・デザイン・ブログ・英語・Youtubeの参考書・キャリア・副業・マーケティング・漫画・美容知識・雑誌などが読み放題です。

人気の本もあるので是非お試ししてみてください!30日以内に解約すればお金は全くかかりません。

 


最近の投稿

【今すぐ行動しよう】フリーランスエンジニアとブログの相性は抜群!

フリーランスエンジニアがスキルや経験から得たビジネスノウハウを共有する手段として「ブログ」は非常におすすめです。自身のスキルや知識のアウトプットや、実際に自分が経験したことを共有して同じような境遇の人の手助けになるような情報を公開することで自分に帰ってくるメリットは非常に多いです。今回はそのあたりについて紹介していきます。

【経験談】フリーランスのエンジニアは本当に大変なの?安定のコツやポイント

フリーランスのエンジニアは「大変だからやめとけ」という話をよく聞くので、そのことについて現役でフリーランスエンジニアとして生活している私が、その話の実態を解説しようと思います。フリーランスエンジニアの大変なところはもちろんありますが、それ以上にメリットが多いので私個人的には非常におすすめしています。

【幸福度UP】フリーランスエンジニアの「田舎暮らし」実現できます

フリーランスエンジニアとして田舎で暮らす人が増えてるって聞くけど、本当なのかな?どうやったら実現できるのか?今回はフリーランスエンジニアとして田舎で生活をしたいという方向けに、実現可能なのか、実現するにはどうすれば良いのかをご紹介します。

【単価交渉で収入アップ】フリーランスが単価交渉を成功させる4つのポイント

フリーランスが収入をアップさせるための重要な手段のひとつに「単価交渉」があります。今回は、現役でフリーランスとしてエンジニアをしている私が実践して効果のあった単価交渉の方法やコツをご紹介します。

【 今なら無料!】タスク管理ツール「Backlog」を無料で使う方法と手順

今回は、普段のタスク管理からプロジェクトの管理まで幅広く使えるツール「Backlog」を無料で使うための方法とその手段を画像つきで紹介しました。もし気に入らなければ、期間内に解約してしまえば費用はかかりません。また、以外と知られていない「フリープラン」も紹介しているので、是非参考にしてみてください。

Copyright© FUNA BLOG , 2021 All Rights Reserved.