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”是键值,而不是数组中的位置。颜色和蓝色是对象的属性。我不知道如何创建一个数组/集合来做到这一点(如果可以的话)。任何帮助或可选建议如何做到这一点将不胜感激。

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 回答