C#初級プログラミング

C#でのDictionaryの使い方

キーワード:Dictionary,SortedList,List

Dictionaryの使い方を見ていきましょう。

Dictionary<TKey,TValue>

TkeyとTValueの部分には任意の型を入れます。

Tkeyはキーとなる値
TValueにはキーに紐づけて保持する値を入れます。

例えばキーを数値,値が文字なら

こんな感じになります。

TValueにはstringではなく,カスタムクラスを入れることで
多くの値を設定できます。
要するに識別できるキーと値をペアで設定しましょうという事。

値の設定はキーとValueを同時に入れます。

キーは重複できないので

こんな感じになっていると32を2回目に入れた時点でエラーになります。

値を取得する場合はキーを指定して取得することができます。

こんな感じになります。

似たようなリスト系のクラスにSortedListというのがあります。
書き方は同じです。

Dictionaryとの違いはSortedListの場合,Addした後に必ずキーでソートをするという事。

こんな感じで入れても,最後にいれた10が先頭になります。

Dictionaryの場合は入れた順番で入る。

SortedListの場合はソートされている。

要するに,SortedListは毎回ソートされるため
キーの順番をランダムに入れる場合はAddするときの
パフォーマンスが悪いという事になります。

じゃあ使えないかというとそうではなく,
ソートされているため,値を取り出すときパフォーマンスはいいのです。

使いどころとしては,大量データで
その中から1件を探すような場合は高速で検索できます。
その場合はAddのパフォーマンスの兼ね合いがあるので
大量データのテストをして,どちらを使うかは検討してみてください。

ただ,私自身はDictionaryやSortedListはめったに使いません。
パフォーマンスが出ないときにSortedListを使うこともありますが,
基本的にはList<T>を使います。Listに関しては他の記事で書いているので
解説は省きますが,Listに対してFindで検索ができるため,
カスタムクラスのListで基本は対応しています。

トップページへ戻る

C#初心者のための基礎文法

C#プログラマーのための正しい3層構造が分かる「C#アーキテクチャー解説動画」をここで公開しています。よかったら見てみてください。

 

参考図書

C#の文法

プログラミングC#

プログラミング.NET Framework

実戦で役立つ C#プログラミングのイディオム/定石&パターン

Head First C# ―頭とからだで覚えるC#の基本

Effective C#

C#プログラマのための.NETアプリケーション最適化技法