C#ArrayList调用构造函数类

时间:2010-04-27 15:19:10

标签: c# .net constructor arraylist

我知道ArrayList可能不适合这种特殊情况,但幽默我并帮助我摆脱这种头痛。

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

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

我正在尝试构建一个ArrayList来通过调用这个构造函数来构建一个集合。但是,当我使用这个构造函数时,我似乎无法找到正确构建ArrayList的方法。我已经用数组找出了它,但没有使用ArrayList。

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

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

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

7 个答案:

答案 0 :(得分:9)

应该是:

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();

答案 1 :(得分:4)

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

答案 2 :(得分:3)

您应该向列表中添加元素。如下所示

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

答案 3 :(得分:3)

你需要做

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

答案 4 :(得分:3)

当你试图在没有先填充数组列表的情况下调用people [i]时,你将获得IndexOutOfRangeException。您必须先添加到ArrayList。

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

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

您是否有理由不使用List<Peoples>来为您提供强类型的收藏? 此外,您在课堂上有可公开访问的字段,但我意识到您可能只是将该代码汇总到一起。

答案 5 :(得分:2)

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

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

答案 6 :(得分:0)

仅供参考,ArrayList被许多人认为是邪恶的。正如Kevin所说,对我们List&lt; People&gt ;.

会更好

列表就是所谓的通用名称。谷歌“强烈打字”,“拳击”和“通用”,以便更好地理解原因。

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

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

ArrayList或List&lt; T&gt;当使用默认构造函数实例化时没有单元格,即 列表与LT;人&GT; people = new List&lt; People&gt;();

此时人们[0]不存在。

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

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