2012-04-20 11 views
34

私はC#で多くの経験がありません。私は連想配列でPHPから使用されています。C#で連想配列を処理する最も簡単な方法は何ですか?

私はC#でListクラスと生の配列を参照していますが、いくつかの文字列キーをある時点で関連付けたいと思います。

これを処理する最も簡単な方法は何ですか?

Thx!

+5

@Servy:いくつかの用語でニックピックするだけで** ** ** **連想配列**です。ラドゥは正しいです。 http://en.wikipedia.org/wiki/Associative_arrayさらに、配列が数字で索引付けされていない多くの言語があります。 JavaScriptは1つです。私たちは用語を批判していますが、**連想配列**は**ハッシュテーブル**として実装する必要はありません。 *抽象データ型*と実装の詳細*を混同しています。連想配列は、例えば、平衡二分木によって実装されてもよい。 –

+0

説明をありがとうEric。 – Servy

答えて

61

Dictionaryクラスを使用します。それはあなたが必要とするものを行うべきです。 参照はhereです。

ですから、このような何か行うことができます。

IDictionary<string, int> dict = new Dictionary<string, int>(); 
dict["red"] = 10; 
dict["blue"] = 20; 
+2

上記の例では、辞書の最初の要素を取得しようとする試みがコンパイルされないため、辞書は線形索引付けを許可していないことを理解しています。いくつかの方法で対処することができます。 Linqを使用してDictionaryのKeyValuePairオブジェクトを一度に1つずつ列挙するのが最も簡単です。ただし、注文は保証されていません(または、少なくとも実装の詳細により保証されています)。 – KeithS

+9

@KeithSただし、必要な機能であれば[OrderedDictionary](http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx)があります。 – Servy

+1

完全に正しく働いています! –

12

辞書は動作しますが、.NETは、内蔵の連想配列を持っている一つのインスタンスがNameValueCollectionクラス(System.Collections.Specialized.NameValueCollection)です。

辞書よりもわずかな利点は、存在しないキーを読み込もうとすると、例外をスローするのではなくヌルを返すことです。以下に、値を設定する2つの方法を示します。

NameValueCollection list = new NameValueCollection(); 
list["key1"] = "value1"; 

NameValueCollection list2 = new NameValueCollection() 
{ 
    { "key1", "value1" }, 
    { "key2", "value2" } 
}; 
関連する問題