Как создать экземпляр определенного количества объектов, определенных во время выполнения?

Так вот моя проблема...

Допустим, у меня есть простой класс "Person" только с атрибутами "FirstName" и "LastName".

Я хочу иметь форму, в которой пользователь говорит, сколько «Людей» он хочет создать, а затем заполняет имя для каждого из них.

Например. пользователь хочет создать 20 человек... он ставит 20 на ящик нажимает кнопку и начинает писать имена.

Я не знаю, сколько пользователей он собирается создать, поэтому я не могу иметь сотни объектных переменных в своем коде, подобном этому.

Person p1;
Person p2;
(...)
Person p1000;

person Joao Heleno    schedule 17.11.2009    source источник


Ответы (4)


Просто используйте

List<Person> lstPersons = new List<Person>();

А затем добавьте к нему лиц с помощью:

lstPersons.Add(new Person());

Затем вы можете получить доступ к лицам с

lstPersons[0]
lstPersons[1]
...
person Maximilian Mayerl    schedule 17.11.2009
comment
Спасибо... Это довольно простое решение. Мой мозг все усложнял. - person Joao Heleno; 17.11.2009
comment
Стоит отметить, что описанная пользователем проблема не требует использования динамического списка над массивом. Если нет других требований, которые требуют динамического списка, массив будет немного более производительным (хотя и не настолько значительным, поэтому, если вам удобнее работать со списками, чем с массивами). - person Chris; 17.11.2009
comment
Да, вы правы, но накладные расходы на производительность незначительны. Мне всегда нравится использовать списки вместо массивов просто потому, что это экономит мне работу, если мне придется изменить ее позже. Я думаю, что простота обслуживания важнее, чем повышение производительности на несколько миллисекунд за несколько тысяч обращений к списку. - person Maximilian Mayerl; 17.11.2009

Создайте массив размером с любое число, введенное пользователем. Затем вы можете просто прокрутить массив, чтобы создать их все.

int numberOfPeople = xxx; // Get this value from the user's input
Person[] people = new Person[numberOfPeople];
for (int i = 0; i < people.Length; i++)
    people[i] = new Person();
person Chris    schedule 17.11.2009

Вам необходимо использовать список. Вы создаете список следующим образом:

var persons=new List<Person>();

и вы можете динамически добавлять элементы следующим образом:

Person thePerson=new Person(...);
persons.Add(thePerson);
person Konamiman    schedule 17.11.2009

Вероятно, вы захотите использовать коллекцию для объектов Person. Попробуйте посмотреть эти ссылки

person Kane    schedule 17.11.2009