2016-11-07 15 views
-1

C#で多次元配列を作成するにはどうすればよいですか?文字列キーを使用した多次元配列

私はこのような値を割り当てたい:

myArr["level1"]["enemy"][0] = 1; 
myArr["level1"]["enemy"][1] = 4; 

myArr["level1"]["friend"][0] = 2; 
myArr["level1"]["friend"][1] = 3; 

は私が

public Array level1; 

を使って通常の配列を行い、それに値をプッシュすることができます。

しかし、私はあなたがC#で持っている最もsimiler事はDictionaryだと思う多次元1

+0

通常の配列は、整数のみでインデックス化するので、 'myArr [「LEVEL1」] [「敵」]のようなものが[0] = '1'カスタムインデクサを必要としています。たとえば、「Dictionary <,>」クラスを参照してください。 –

+0

1.これはjavascriptではないので、おそらくこれらのようなデータ構造を使うべきではありません。 2.それに近いものを望むなら、 'Dictionary 'を見てください。 (https://www.dotnetperls.com/dictionary) –

+1

それは助けることができますhttps://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx https://www.dotnetperls.com/2d –

答えて

2

を行うように見えることはできません。

Dictionary<Person, string> dictionary = new Dictionary<Person, string>(); 
Person myPerson = new Person(); 
dictionary[myPerson] = "Some String"; 
... 
string someString = dictionary[myPerson]; 
Console.WriteLine(someString); // "Some String" 

あなたは辞書を取るとのいくつかの種類をbuiledすることができますキーとしてタプル構造:

public class TwoKeyDictionary<K1,K2,V> 
{ 
    private readonly Dictionary<Pair<K1,K2>, V> _dict; 

    public V this[K1 k1, K2 k2] 
    { 
     get { return _dict[new Pair(k1,k2)]; } 
    } 

    private struct Pair 
    { 
     public K1 First; 
     public K2 Second; 

     public override Int32 GetHashCode() 
     { 
      return First.GetHashCode()^Second.GetHashCode(); 
     } 

     // ... Equals, ctor, etc... 
    } 
} 
+0

ありがとうございます - 私は辞書ソリューションに行くと思います。しかし、代わりに整数をキー参照として使用したい場合は、「通常の」配列構造を使用してこれをどうしますか?myArr [0] [1] = {0,2,3} - myArr [0] [1] [0] = [1,4,5]?あなたの助けをもう一度ありがとう! –

+0

あなたは:)私の場合はXMLを管理するほうが簡単です。私は27×15次元アレイを持っているので、辞書ソリューションを使うとすべてを追跡することはかなり難しいでしょう。回答ありがとうございます。 –