2012-03-25 22 views
8

私は、配列のインデックスにデフォルトのインデックス値の代わりにC#で名前を付けることができるのだろうかと思います。C#で配列インデックスに名前を付けることはできますか?

$array = array(
    "foo" => "some foo value", 
    "bar" => "some bar value", 
); 

乾杯:私は基本的に探していると、次のPHPコードのC#の同等です。

+0

あなたは本当にハッシュを希望しています。 – seand

答えて

26

PHPは配列の概念と辞書の概念(別名ハッシュテーブル、ハッシュマップ、連想配列)を単一のarray typeに融合しています。

.NETおよびその他のほとんどのプログラミング環境では、配列は常に数値でインデックスされます。名前の指標について、dictionary代わりに使用します。PHPの連想配列とは異なり

var dict = new Dictionary<string, string> { 
    { "foo", "some foo value" }, 
    { "bar", "some bar value" } 
}; 

は、.NETの辞書がソートされていません。ソートされた辞書が必要な場合(おそらくそうではないかもしれませんが)、.NETはsorted dictionary typeを提供します。

+0

ありがとう、私にできるときに答えを受け入れるでしょう。 – diggersworld

1

C#のHashtableをご覧ください。これはC#で必要なことをするデータ構造です。

0

Dictionary<string, FooValue>または類似のタイプまたはコレクションタイプを使用することができます。また、配列に固執する必要がある場合は、Enumをラベルで定義することもできます。

2

アレイでは、しかし、非常に有用なDictionaryクラスがあり、これはKeyValuePairオブジェクトのコレクションです。これは、キーを持つオブジェクトの反復可能なコレクションであるという点で、配列に似ていますが、より一般的には、キーは任意のタイプであることができます。

例:

Dictionary<string, int> HeightInInches = new Dictionary<string, int>(); 
HeightInInches.Add("Joe", 72); 
HeightInInches.Add("Elaine", 60); 
HeightInInches.Add("Michael", 59); 

foreach(KeyValuePair<string, int> person in HeightInInces) 
{ 
    Console.WriteLine(person.Key + " is " + person.Value + " inches tall."); 
} 

MSDN Documentation for Dictionary<TKey, TValue>

関連する問題