こういった疑問に答えます。
こんにちは、リバティエンジニアの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クラスの使い方を解説しました。
キーと値のセットで保持できるので、使い所が多くかなり便利だと思います。
調べて学習したあとは必ず自分の環境でもアレンジして動作確認して動かしてみることをおすすめします。
【2021年最新版】C#学習におすすめ本のレベル別TOP3を紹介【現役エンジニアが厳選】
現役エンジニアがおすすめするC#の本・参考書のTOP3をご紹介!本当にお勧めした本だけを厳選したので、TOP3だけを紹介します。それぞれのレベル別に分けたので、自分に合ったものを選んでください。
他にもC# の記事を出しているので良かったら見てみてください。
>> 【C#】 usingステートメントとは?サンプルコードで解説
フリーランスに挑戦!準備は必要ない。~エンジニア・プログラマ編~
今回は「フリーランスエンジニアになるのに準備なんて必要ない。」このことについて、実際の体験談も含めてお話していきます。フリーランスと言ってもいろいろな職種があります。デザイナであったりライターなど様々です。そんな中でも今回は、エンジニアやプログラマといった職種についてのお話をしていこうと思います。
続きを見る
関連記事
【2021年最新版】C#学習におすすめ本のレベル別TOP3を紹介【現役エンジニアが厳選】
現役エンジニアがおすすめするC#の本・参考書のTOP3をご紹介!本当にお勧めした本だけを厳選したので、TOP3だけを紹介します。それぞれのレベル別に分けたので、自分に合ったものを選んでください。
【コピペOK!】ブロックの中のブロック要素を上下左右中央に揃える方法【HTML/CSS】
FUNAこんにちは、リバティエンジニアのFUNA(フナ)です。現役でフリーランスのエンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。 この記事はこんな方におすすめ ブロ ...
【CSS】たった1行のコピペで簡単!object fitで画像をトリミングする方法
CSSで画像をトリミングしたい時にたったの1行で実装できる方法を解説します。「object-fit」についてどのような時に使うのか、その使い方や応用の仕方を覚えてみてください。
【コピペOK】CSSでcounterを利用して自動ナンバリングする方法
今回はCSSの「counter」をコピペでも簡単に実装できる方法・ソースコードをご紹介します。このcounterを利用することで、CSSだけで自動でナンバリングを実装することができます。意外と知られていないのですが、「1 2 3 4」の基本のものや「第1章 第2章 第3章 第4章」と書き出しをつけたりすることができて、幅広く応用できます。
【コピペOK】CSSだけで背景を斜めに区切る方法【レスポンシブ対応】
今回は、HTML/CSSで背景を斜めに区切ってデザインする方法を、コピペでも簡単に実装する方法を解説します。ランディングページやコーポレートサイトなどの作成時に背景を斜めに区切ってレイアウトされているサイトを良く見かけますが、実装の仕方は簡単なので、ぜひ覚えておきましょう。