2009-11-17 10 views
2

Alors voici mon problème ...Comment instancier un certain nombre d'objets déterminés lors de l'exécution?

Disons que j'ai une classe "Person" simple avec juste les attributs "FirstName" et "LastName". Je veux avoir un formulaire où l'utilisateur dit combien de "Personnes" il veut créer et ensuite il remplit le nom de chacun.

E.g. l'utilisateur veut créer 20 personnes ... il met 20 sur une boîte clique sur le bouton et commence à écrire des noms.

Je ne sais pas combien d'utilisateurs il va créer je ne peux pas avoir des centaines de variables d'objet dans mon code comme celui-ci

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

Répondre

4

Il suffit d'utiliser un

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

Et puis ajoutez personnes avec:

lstPersons.Add(new Person()); 

Vous pouvez alors accéder aux personnes

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

Merci ... C'est une solution assez simple. Mon cerveau le compliquait. –

+0

Il est à noter que le problème décrit par l'utilisateur ne nécessite pas l'utilisation d'une liste dynamique sur un tableau. À moins qu'il y ait d'autres exigences qui nécessitent une liste dynamique, un tableau sera légèrement plus performant (mais pas au point d'être significatif, donc si vous êtes plus à l'aise avec les listes que les tableaux, allez-y). – Chris

+0

Oui, vous avez raison, mais les frais généraux de performance sont négligeables. J'aime toujours utiliser les listes plutôt que les tableaux simplement parce que cela me sauve du travail si je devais le changer plus tard. Je pense que la maintenance facile est plus importante que quelques millisecondes de meilleures performances pour quelques milliers d'accès à la liste. –

2

Vous devez utiliser a list. Vous créez la liste de cette Vay:

var persons=new List<Person>(); 

et vous pouvez ajouter dynamiquement des éléments de cette façon:

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

Vous aurez probablement envie d'utiliser une collection d'objets personne. Essayez de regarder ces liens

3

Créer un tableau, dimensionné de manière à ce que l'utilisateur numéro entré. Ensuite, vous pouvez simplement parcourir le tableau pour les instancier tous.

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();