我知道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");
根据我得到的例外,我的索引显然超出了范围。
答案 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]引用它们,但不能使用下标来添加它们。