【问题标题】:Array/Collection of Objects对象的数组/集合
【发布时间】:2013-01-30 21:06:34
【问题描述】:

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

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

【问题讨论】:

  • 您描述的是Dictionary&lt;int, ObjectInArray&gt;
  • 你能举例说明你的“收藏”是什么样的吗? (你的解释让我很困惑。)
  • 欢迎来到 StackOverflow!你试过什么?
  • 这称为Map or Associative Array,由IDictionary接口表示。

标签: c# arrays collections


【解决方案1】:

我认为字典就是您要找的东西

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

【讨论】:

  • 只有object 应该是ObjectInArray
【解决方案2】:

你不想要一个数组,你想要一个可以将一种类型的键与另一种类型的值相关联的东西。 .Net 中的此类集合称为Dictionary&lt;TKey, TValue&gt;,专门针对您的情况Dictionary&lt;int, ObjectInArray&gt;

例子:

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】:

    您正在寻找的是Dictionary&lt;TKey, TValue&gt;http://www.dotnetperls.com/dictionary 可以存储键值对,然后根据键访问值。

    在您的示例中,字典为 Dictionary&lt;int, ObjectInArray&gt;

    【讨论】:

      【解决方案4】:

      System.Collections.Generic.Dictionary&lt;TKey, TValue&gt; 是你要找的。​​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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-29
        • 2021-01-24
        • 2020-01-05
        • 1970-01-01
        • 2018-11-19
        • 2010-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多