
こういった疑問に答えます。
こんにちは、リバティエンジニアの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コレクションについてお話ししたのを覚えていますでしょうか。
忘れかけている方は再度確認しておくといいかもです。
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#】 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文ディクショナリ ...