Я пытаюсь сделать список около 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);
}
}
Но я получаю эту ошибку:
An unhandled exception of type 'System.IndexOutOfRangeException' occurred in [my program].exe
Additional information: Index was outside the bounds of the array.
В этой программе "Team" является пользовательский класс для которого требуется номер команды при создании (... новая команда ([номер команды])).
Каждый номер команды - это их уникальная идентификация, поэтому это должно соответствовать индексу каждой команды в списке.
...teams[y] = new Team(y);...
То, что я пытаюсь сделать, это убедиться, что есть Team объект создается для каждого элемента в команд так, что я не впадать в ошибки позже при попытке добавить атрибут в определенный элемент. Кроме того, я не хочу «Team 0», поэтому я начал у по адресу в для цикл. Я также пробовал использовать цикл foreach, но я получаю ту же ошибку.
Я использую Visual Studio 2012 Express. Это Windows Presentation Forms программа написана на C#.
Если вам действительно нужен массив, используйте команду «Команда [] teams = new Team [5500];'. Но вы можете использовать «Список», просто используйте метод «Добавить», чтобы добавить элементы в свой список. Обратите внимание, что оба «Список » и «T []' индексируются от «0» до «N-1», а не «1» через «N». –
Я использовал список, потому что я нахожу списки более доступными, чем обычные массивы. Спасибо за вашу помощь! – xProg660
Да, списки, как правило, лучше. Я неправильно понял, потому что вы упомянули «проблема с массивом» в заголовке, но я понимаю, что это может быть просто ссылка на сообщение об исключении. ** Примечание: ** Если вам нравится Linq, вы можете рассмотреть «var commands = Enumerable.Range (1, 5500). Выберите (y => новая команда (y)). ToList();'. –