2009-11-17 4 views
2

내 문제는 여기에 ...런타임에 결정된 특정 개수의 객체를 인스턴스화하는 방법은 무엇입니까?

"PersonName"및 "LastName"속성과 함께 간단한 "Person"클래스가 있다고 가정 해 보겠습니다.

사용자가 얼마나 많은 "Persons"를 만들고 싶은지를 말한 다음, 각 Person의 이름을 채우는 양식이 필요합니다.

예. 사용자는 20 명을 만들고 싶어한다 ... 그는 상자에 20을 놓고 버튼을 클릭하고 이름을 쓰기 시작한다.

나는 그가 그래서 당신은 a list를 사용하기 위해 필요한이

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

처럼 내 코드에서 개체 변수의 수백을 가질 수 없습니다 만들 것입니다 얼마나 많은 사용자가 알 수 없습니다. 당신은 목록이의 vay 만들 :

var persons=new List<Person>(); 

및 동적 항목이 방법을 추가 할 수 있습니다

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

당신은 아마 사람 개체에 컬렉션을 사용할 수 있습니다. (T는 일반적인 유형의 사람 임) 이러한 링크

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(); 
관련 문제