【问题标题】:Creating an array within an object在对象中创建数组
【发布时间】:2012-03-07 16:17:04
【问题描述】:

我想做的是创建一个对象,然后使用 set 和 get's,并将其放在对象内的数组中。这可能吗?因此,从下面的示例中,我有酒吧名称的集合和获取,但是我想将名称和位置存储在对象内的数组中,以便以后访问。这可能吗?

public class barlist
{
    private string barName;
    private string barLocation;

    public string Name
    {
        get { return barName; }
        set { barName = value; }
    }

    public string Location
    {
        get { return barLocation; }
        set { barLocation = value; }
    }
}  

【问题讨论】:

  • 您是否有特别的原因想要这样做?
  • 您想将对象放在对象内的数组中吗?
  • 我不确定我是否完全关注你。为什么不创建一个Bar 类,然后使用List<Bar>
  • 你的问题没有意义。您是否希望能够将您的类的实例存储在可以通过该类访问的数组中?或者,您是否希望能够以“索引”方式访问您的类的属性?
  • 你可以很好地做到这一点,但你想用这个实现什么?

标签: c# arrays object


【解决方案1】:

可能是 - 合理的否。
数组应该是类的静态属性或单独的类。
您只想拥有一个数组,否则删除一个栏将意味着修改该栏的所有实例。

【讨论】:

  • 我这样做的原因是为了保存所有酒吧的名称和位置。有没有一种方法可以动态地从酒吧名称中创建一个对象?例如。如果我希望对象名称是条形名称并且名称来自文本框或列表,它不喜欢它。例如 barlist item.text = new barlist() 不起作用
【解决方案2】:

根据评论,您想要的正是令人困惑的。我认为您想要的是能够将 Bars 列表作为任何一个 Bar 的成员引用。这很简单;你想要的是一个静态成员:

public class barlist
{
    ...

    public static List<barlist> listOfBars;
}  

然后,您可以创建条形并将它们添加到列表中:

var bar = new barlist();
barlist.listOfBars.Add(bar);

您可以通过实现 IList 接口使您的“barlist”类显示为集合而不是拥有集合,该接口强制执行添加方法、删除和访问列表中的栏。您可以简单地将这些调用“传递”到私有列表中,如果您希望任何对象具有相同的列表,请将该列表设为静态。

【讨论】:

    【解决方案3】:

    我不太确定您想要完成什么,但是您可以定义一个对象数组,这可以通过强类型为您的类或仅使用对象来实现。你可以使用这三种结构

    1. ArrayList
    2. List&lt;barlist&gt; barlist 的对象
    3. barList[] blah = new barList[10] ;

    【讨论】:

      【解决方案4】:

      例如,您可以在类中使用静态列表并将每个对象添加到构造函数中的列表中

      例如(在您的代码上)

      public class barlist
      {
          private string barName;
          private string barLocation;
          public static List<barlist> myBarArray = new List<barlist>();
          public string Name
          {
              get { return barName; }
              set { barName = value; }
          }
          public barlist()
          {
            myBarArray.Add(this);
          }
          public string Location
          {
              get { return barLocation; }
              set { barLocation = value; }
          }
      }  
      

      现在每次创建 barlist 对象时,该对象都会添加到 List 中。

      然后您可以访问每个 barlist barName 和 barLocation。

      【讨论】:

        猜你喜欢
        • 2017-09-02
        • 2012-01-17
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-09
        • 2020-03-14
        相关资源
        最近更新 更多