【发布时间】:2014-01-23 06:47:32
【问题描述】:
我正在尝试创建一个大约 5500 个团队 的 列表,并使用此代码为列表的每个元素创建一个对象 Team我从一个教程中得到:
public Form1()
{
InitializeComponent();
List<Team> teams = new List<Team>();
teams.Capacity = 5500;
for (int y = 1; y <= 5500; y++)
{
teams[y] = new Team(y);
}
}
但我不断收到此错误:
“System.IndexOutOfRangeException”类型的未处理异常 发生在 [我的程序].exe
附加信息:索引超出了数组的范围。
在这个程序中,“Team”是一个自定义类,在创建时需要一个团队编号(...new Team([teamnumber]))。
每个团队编号都是他们的唯一身份,因此必须与列表中每个团队的索引相对应。
...teams[y] = new Team(y);...
我要做的是确保为 teams 中的每个元素创建一个 Team 对象,这样我以后在尝试时不会遇到错误为某个元素添加一个属性。另外,我不想要一个“团队 0”,这就是为什么我在 for 循环中的 1 开始 y。我也尝试过使用 foreach 循环,但我得到了同样的错误。
我正在使用 Visual Studio 2012 Express。这是一个用C#编写的Windows Presentation Forms程序。
【问题讨论】:
-
如果你真的想要一个数组,使用
Team[] teams = new Team[5500];。但是您可以使用List<Team>,只需使用Add方法将项目附加到您的列表中。请注意,List<T>和T[]的索引都是从0到N-1,而不是1到N。 -
我使用列表是因为我发现列表比普通数组更易于访问。谢谢大家的帮助!
-
是的,列表通常更好。我误解了,因为您在标题中提到了“数组问题”,但我意识到这可能只是对异常消息的引用。 注意:如果你喜欢Linq,可以考虑
var teams = Enumerable.Range(1, 5500).Select(y => new Team(y)).ToList();。
标签: c# list for-loop foreach indexing