【问题标题】:C# ArrayList calling on a constructor classC# ArrayList 调用构造函数类
【发布时间】:2011-02-12 22:14:17
【问题描述】:

我知道 ArrayList 可能不是解决这种特殊情况的方法,但请幽默并帮助我摆脱这种头痛。

我有一个构造函数类如下:

class Peoples
    {
        public string LastName;
        public string FirstName;
        public Peoples(string lastName, string firstName)
        {
            LastName = lastName;
            FirstName = firstName;
        }
    }

我正在尝试通过调用此构造函数来构建一个 ArrayList 来构建一个集合。但是,当我使用此构造函数时,我似乎无法找到正确构建 ArrayList 的方法。我用 Array 解决了这个问题,但不是 ArrayList。

我一直在搞砸这个来尝试构建我的 ArrayList:

ArrayList people = new ArrayList();
            people[0] = new Peoples("Bar", "Foo");
            people[1] = new Peoples("Quirk", "Baz");
            people[2] = new Peopls("Get", "Gad");

根据我得到的异常,我的索引显然超出了范围。

【问题讨论】:

  • 当你在它改变人民到个人。

标签: c# .net constructor arraylist


【解决方案1】:

应该是:

people.Add(new Peoples(etc.));

而不是

people[0] = new people()...;

或者更好:

List<People> people = new List<People>();

people.Add(new People);

只是为了完整。使用直数组:

People[] people = new People[3];

people[0] = new People();

【讨论】:

  • 太好了,谢谢!抱歉,我还没有完全弄清楚如何格式化我的帖子。如果有人可以向我发送一些提示信息,那就太好了。
  • 感谢各位的帮助。这样做的唯一原因是它是针对学校项目的,并且我需要遍历所有不同的类型(Array、ArrayList、List 等)。但我非常感谢有关更好方法的提示。
【解决方案2】:

试试people.Add(new Peoples("Bar", "Foo");

【讨论】:

    【解决方案3】:

    您应该将元素添加到列表中。像下面这样

    ArrayList people = new ArrayList(); 
    people.Add(new Peoples("Bar", "Foo"));
    

    【讨论】:

      【解决方案4】:

      你需要做的

      people.Add (new Peoples("Bar", "Foo"));
      people.Add (new Peoples("Quirk", "Baz"));
      people.Add (new Peoples("Get", "Gad"));
      

      【讨论】:

        【解决方案5】:

        当您尝试调用 people[i] 而不首先填充数组列表时,您将收到 IndexOutOfRangeException。您必须首先添加到 ArrayList。

        ArrayList list = new ArrayList();
        list.Add(new Peoples("Bar", "Foo"));
        

        然后您可以通过索引访问列表,这将在 foreach 或 for 循环中完成。

        您不使用List&lt;Peoples&gt; 是否有理由为您提供强类型集合? 此外,尽管我意识到您可能只是将问题的代码放在一起,但您在课堂上有可公开访问的字段。

        【讨论】:

          【解决方案6】:

          您应该使用ArrayList.Add 函数添加到数组列表中。

          ArrayList peoplesArray = new ArrayList();
          peoplesArray.Add(new Peoples("John","Smith");
          

          【讨论】:

            【解决方案7】:

            仅供参考,许多人认为 ArrayList 是邪恶的。正如 Kevin 所说,我们最好列出

            列表就是所谓的泛型。谷歌“强类型”、“装箱”和“泛型”以便更好地理解原因。

            回到你原来的问题: 实例化时必须声明数组的大小,即 人[]人=新人[5];

            这会在数组中创建 5 个空单元格,因此您可以使用下标访问单元格,即 [0]

            使用默认构造函数实例化的 ArrayList 或 List 没有单元格,即 列表 人 = 新列表();

            people[0] 此时不存在。

            使用 people.Add(new People("first", "last"));将新单元格添加到列表中。现在下标 [0] 有效,但 [1] 仍然无效,因为只有一个单元格。

            列表,即 ArrayList 或 List 可以通过使用 .Add() 动态增长。添加到列表后,您可以使用下标 [i] 引用它们,但不能使用下标添加它们。

            【讨论】:

              猜你喜欢
              • 2015-08-18
              • 2013-03-24
              • 2018-05-25
              • 2012-05-12
              • 1970-01-01
              • 2020-11-28
              • 2016-07-19
              • 2014-04-18
              • 2012-09-28
              相关资源
              最近更新 更多