2009-11-17 2 views
2

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

Предположим, у меня есть простой класс «Человек», только с атрибутами «FirstName» и «LastName».

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

E.g. пользователь хочет создать 20 человек ... он кладет 20 на коробку, нажимает кнопку и начинает писать имена.

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

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

ответ

4

Просто использовать

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

А потом добавить людей к нему:

lstPersons.Add(new Person()); 

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

lstPersons[0] 
lstPersons[1] 
... 
+0

Спасибо ... Это довольно простое решение. Мой мозг усложнял это. –

+0

Стоит отметить, что проблема, которую описывает пользователь, не требует использования динамического списка по массиву. Если нет других требований, требующих динамического списка, массив будет немного более результативным (хотя это не так важно, поэтому, если вам удобнее списки, а не массивы). – Chris

+0

Да, вы правы, но накладные расходы производительности незначительны. Мне всегда нравится использовать списки по массивам только потому, что это экономит меня, если мне придется изменить его позже. Я думаю, что простота обслуживания важнее, чем несколько миллисекунд, более высокая производительность для нескольких тысяч доступа к списку. –

2

Вам нужно использовать a list. Вы можете создать список по этой Vay:

var persons=new List<Person>(); 

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

Person thePerson=new Person(...); 
persons.Add(thePerson); 
0

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

3

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

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(); 
Смежные вопросы