我想创建一个包含对象的数组/集合。我希望能够使用键值访问数组/集合中的对象。我认为访问对象的语法是这样的:
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”在这种情况下是键值,而不是数组中的位置。颜色和蓝色是对象中的属性。我不知道如何创建一个数组/集合来做到这一点(如果可以的话)。任何帮助或可选建议如何做到这一点将不胜感激。
答案 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>
正是您要找的。 p>
这是一个包含值的通用集合,可以通过提供密钥来访问(通过索引器)。
它的初始化如下:
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();