1

オブジェクトを含む配列/コレクションを作成したいと思います。キー値を使用して配列/コレクション内のオブジェクトにアクセスできるようにしたいと考えています。オブジェクトにアクセスするための構文は次のようになると思います。

ObjectArray[52].Color = "Blue"
ObjectArray[52].Height = 12.2

If(ObjectArray[52].Color == "Blue")
{
   // Code for Blue
}
If(ObjectArray[52].Height < 13.0)
{
   // Code for height less than 13.
}

class ObjectInArray
{
   public string Color;
   public double Height;
}

この場合の「52」はキー値であり、配列内の位置ではありません。Color と Blue は、オブジェクトのプロパティです。これを行うための配列/コレクションを作成する方法がわかりません(可能な場合)。これを行う方法についてのヘルプまたはオプションの提案をいただければ幸いです。

4

4 に答える 4

4

辞書はあなたが探しているものだと思います

Dictionary<int, ObjectInArray > dict= new Dictionary<int, ObjectInArray >();
于 2013-01-30T21:08:28.907 に答える
1

あなたが探しているのはDictionary<TKey, TValue>です。http://www.dotnetperls.com/dictionaryキーと値のペアを保存し、キーに基づいて値にアクセスできます。

あなたの例では、辞書は次のようになりますDictionary<int, ObjectInArray>

于 2013-01-30T21:09:28.750 に答える
1

配列は必要ありません。あるタイプのキーを別のタイプの値に関連付けることができるものが必要です。.NetでのこのようなコレクションはDictionary<TKey, TValue>、特にあなたの場合と呼ばれますDictionary<int, ObjectInArray>

例:

Dictionary<int, ObjectInArray> ObjectArray = new Dictionary<int, ObjectInArray>();
ObjectArray[52] = new ObjectInArray();

ObjectArray[52].Color = "Blue"
ObjectArray[52].Height = 12.2

if (ObjectArray[52].Color == "Blue")
{
   // Code for Blue
}

if (ObjectArray[52].Height < 13.0)
{
   // Code for height less than 13.
}
于 2013-01-30T21:10:36.740 に答える
1

System.Collections.Generic.Dictionary<TKey, TValue>あなたが探しているものです。

これは、キーを指定することで (インデクサーを介して) アクセスできる値を含むジェネリック コレクションです。

その初期化は次のとおりです。

Dictionary<int, ObjectInArray> ObjectArray = new Dictionary<int, ObjectInArray>()
{
    { /*key:*/ 52, /*value:*/ new ObjectInArray() },
    { 53, new ObjectInArray() } // Etc
};

そして、自分でコードを書いたのとまったく同じように使用できます。

ディクショナリは、アクセスしているインデックスが存在するかどうかを自動的に検出し、必要に応じて作成するという点でも非常に賢いです。

ObjectArray[10] /* <-- Doesn't exist, will be created */ = new ObjectInArray();
于 2013-01-30T21:31:44.797 に答える