数组/对象集合

时间:2013-01-30 21:06:35

标签: c# arrays collections

我想创建一个包含对象的数组/集合。我希望能够使用键值访问数组/集合中的对象。我认为访问对象的语法是这样的:

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 个答案:

答案 0 :(得分:4)

我认为词典是你正在寻找的

Dictionary<int, ObjectInArray > dict= new Dictionary<int, ObjectInArray >();

答案 1 :(得分:1)

您要找的是Dictionary<TKey, TValue>http://www.dotnetperls.com/dictionary您可以存储键值对,然后根据键访问该值。

在您的示例中,字典将为Dictionary<int, ObjectInArray>

答案 2 :(得分: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.
}

答案 3 :(得分: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();