【プログラミング教育ナビ】は、プログラミング初心者が自分に合った勉強法や教室を見つけられたり、プログラミングに特化した求人が検索できたり、SaaSの比較ができるサイトです。人気講座のある入門スクールや独学できる学習サイトを、口コミ・評判で比較してランキング形式でご紹介しています。言語から探す場所から探す条件から探すrsstwitterfacebook案件獲得できなかったら全額返金!未経験からプロのエンジニアスキルを身につけ、フリーエンジニアとして稼げるまで徹底サポート。プログラミング初心者向け技術系ノウハウ・まとめTweetPocket【C#】連想配列Dictionaryを使う(画像1を使用)連想配列とは?キーと値をペアとして保持するコレクション連想配列とはキー(key)と値(value)をペアとして保持するコレクションです。名前に「連想」と付いていますが、通常の配列との違いは、通常の配列がインデックス(添字)を使って要素を参照するのに対し、連想配列ではキーを指定して値を参照します。(画像2を使用)上の例では、”a”と”ビール”、”b”と”日本酒”、”c”と”ワイン”がキーと値の関係になります。”a”というキーを指定すると、対になる”ビール”という値が返ってきます。キーから連想される値が返ってくるので、連想配列と呼ばれます。キーはユニークな値を指定するキーにはユニークな値を設定するようにします。ユニークとは日本語でいうと、一意ともいいます。Dictionaryクラスでは、キーは必ず重複していないキーを設定します。上の例だと、”b”という文字列がキーですが、他に”b”というキーが存在していてはいけません。同じキーを設定しようとするとエラーになります。C#にはHashtableクラスもある連想配列はハッシュテーブルとも呼ばれます。Framework2.0から、Dictionaryクラス(System.Collections.Generic)が追加されました。前者を使う理由が特にないときは、後者を使うようにします。連想配列のコーディング簡単な実装例を見てみましょう。dic[“b”]);Dictionaryクラスを宣言するDictionaryクラスを使うには、まず次の書式にしたがって宣言をします。Dictionary();クラスの後に括弧が付いていますが、これはジェネリックというC#の機能です。この括弧の中には、キーの型名と値の型名を指定します。キーが文字列型ならstringを、整数型ならintを指定します。キーと値を追加するC#でDictionaryにキーと値を追加する方法は2種類あります。結果は同じですが、重複したキーを登録しようとした時に、挙動が異なります。・Addメソッドを使うキーと値を引数としてAddメソッドで追加を行います。dict.Add(“apple”,”りんご”);この例では、”apple”がキーとなり、”りんご”となります。Addメソッドの引数は、宣言を行なったときの型を指定します。・通常の配列のように追加する通常の配列のようにキーと値を追加するには次のように書きます。“りんご”;どちらの方法でもキーと値の追加が可能ですが、既にあるキーを指定すると前者はエラーになり、後者は上書きされます。キーの重複が予想されるときでAddメソッドを使う際は、if文でキーが既に追加されていないか確認して、必要に応じて削除・追加をする必要があります。“カクテル”);}同一キーが既に含まれているかをbool値で返すContainsKeyメソッドと、引数で指定したキーを削除するRemoveメソッドを使用しています。Removeメソッドは存在しないキーを引数に指定してもエラーにはなりません。キーを書き換える上の処理では、ContainsKeyメソッドはなくても同じ処理になります。dic[“b”];値を参照するには、上のように記述します。Dictionaryクラスはジェネリッククラスなので、取り出す際にキャストが必要ありません。初期化の際に型指定をすることで取り出される値も指定された型で取り出されます。キーを指定して取得しますが、キーが存在しなければ例外が発生します。上の例では、”日本酒”という文字列を参照できます。Dictionaryクラスを使うメリットデータを重複なく管理できるDictionaryクラスを使うと、キーを基にデータを重複なく管理できます。二次元配列ではキーに相当する部分の重複を管理するコードを作らないと、いくつでもデータを追加できてしまいます。Dictionaryクラスではその手間が省けるわけです。これはDictionaryクラスを使う上で注意点にもなります。ある学校で生徒の氏名をキーにしたとします。キーは必ずユニークなものを使うという原則があるので、これでは同姓同名に対応できません。同じ学校に2人の山田美香さんがいたら、システムが動かなくなってしまいます。した事態を避けるために、通常は学生番号をつけて、学生番号をキーにするなどの対策を施します。配列から要素を取り出す時に、for文を使ってキーを検索して、ヒットしたインデックスの要素を取り出すという処理がよくあります。この処理は要素数が増えると処理が遅くなります。同様の処理ならば、Dictionaryクラスを使ったほうが効率的です。投稿者:プログラミング教育ナビ編集部tweetプログラミングで挫折しそうなら、現役エンジニアにマンツーマンで相談してみませんか?オンラインのプログラミングスクール「TechAcademy」のメンターが対応。人気の記事まだデータがありません。【プログラミング教育ナビ】は、プログラミング初心者が自分に合った勉強法や教室を見つけられたり、プログラミングに特化した求人が検索できたり、SaaSの比較ができるサイトです。人気講座のある入門スクールや独学できる学習サイトを、口コミ・評判で比較してランキング形式でご紹介しています。