2013-06-04 15 views
5
にアクセスする方法

私はC#/ .Netを初めて使用しており、クラス辞書に問題があります。辞書<TKey、TValue> .ItemプロパティのC#

Dictionary<int, ListViewGroup> groups = new Dictionary<int, ListViewGroup>(); 
groups.Add(1, new ListViewGroup("Group1")); 

私はそのキーによって、私のグループを検索したい:私は(今、それは問題ではありません以上の項目)グループの辞書を作成し、アイテムを追加しました。ドキュメントでは、直接またはインデクサーがアクセスできるItemプロパティがあると言います。しかし、私が直接アクセスしようとすると:

ListViewGroup g = groups.Item(1); 

私のコンパイラは、DictionaryクラスのプロパティItemの定義がないと言っています。 誰も私にこれを説明できますか? ありがとうございます。

+0

プロ先端を取得するように:あなたは、ドットを入力すると、 '.'とインテリセンスが現れます。あなたがアクセスできるすべてのメソッド、変数、プロパティ、イベントなどがそのリストに含まれます。どのように呼び出されたのかわからなくても、あなたが探している方法を見つけるのに最適な方法です。 – Nolonar

+0

@Nolonar:常にそうであるとは限りません。デフォルトでは、intellisenseのオプションは「上級者を隠す」ということです。 –

+0

@DanPuzey参照してください。啓発に感謝します。 – Nolonar

答えて

9

Itemは、あなたが定義を見て、それを確認することができ、インデクサです:

public TValue this[TKey key] { get; set; } 

は、単にキーによって要素にアクセスするインデクサ構文を使用します。

ListViewGroup g = groups[1]; 
Console.WriteLine (g.Header); //prints Group1 

注:ノーならば、これはKeyNotFoundExceptionをスローしますこのようなキーを持つエントリは、groups辞書に存在します。たとえばgroups[2]はあなたのケースで例外をスローします。

3

groups[n]を使用してください。

あなたがDictionary<TKey, TValue>.Itemためthe manualを見れば、あなたは見つけることがあります。

このプロパティは、次のC#の構文を使用して、コレクションに特定の要素にアクセスする機能を提供します。myCollection [キー]

または "C#のインデクサー" のためのWeb検索:

Indexers Tutorial (C#)

インデクサの定義は、あなたがのように振る舞うクラスを作成することを可能にする "仮想アレイの。" のインスタンスは、[]配列アクセス演算子を使用してアクセスできます。

インデクサーまたはこの場合のItemは決して直接アクセスされません。

+0

あなたはグループを意味します。アイテム[n]?これは同じ問題を抱えているからです。 – Wolf

+0

@Wolfいいえそれはありません。あなたの質問に正確なコードと正確なコンパイルエラーを表示すると、本当に役に立ちます。 – CodeCaster

+3

答えに辞書名として 'Item'を使用すると、誤解を招く可能性が高くなります。 –

1

基本レベルの辞書クラスにItemというプロパティがないため、エラーが発生しています。

Dictionary<int, ListViewGroup> groups = new Dictionary<int, ListViewGroup>(); 
groups.Add(1, new ListViewGroup("Group1")); 

ListViewGroup g = groups.Item(1);ビューの実用的な理解の観点から

ListViewGroup g = groups[1]; 

辞書が代わりにあなたは、任意の数を使用することができるために、番号を使用することを余儀なくされているの本質的配列である(私が言うことを約午前何が基本的な理解のためだけである)あなた同じような文字列であってもよい。あなたは

1 Group1 

基を有していても、あなたの辞書に

new Dictionary<int, ListViewGroup> 

[1]グループ1を取得します。

実際に辞書の涼しさを理解するには、文字列キーを使用するときです。

new Dictionary<string, ListViewGroup> 

あなたはこれをしなかった場合

groups.Add("mykey1", new ListViewGroup("Group1")); 

グループ[「mykey1」]はグループ1

関連する問題