2010-04-17 5 views
5

Le code ci-dessous définit une classe ChargeCustomer qui contient un tableau de type "clients". Je veux être capable de créer un objet avec 1 "client" ou 2 "clients" en fonction des paramètres du constructeur. Est-ce la bonne façon de le faire en C#:Création d'une classe avec un tableau d'objets

public class ChargeCustomer 
{ 
    private Customer[] customers; 

    public ChargeCustomer(string aName, string bName, int charge) 
    { 
     customers = new Customer[2]; 
     customers[0] = new Customer(aName, charge); 
     customers[1] = new Customer(bName, charge); 
    } 

    public ChargeCustomer(string bName, int charge) 
    { 
     customers = new Customer[1]; 
     customers[0] = new Customer(bName, charge); 
    } 

}

Merci!

+0

Est-ce que 'DropBox' dérive de' Customer'? Sinon, vous ne pouvez pas le stocker dans un tableau 'Customer'. – dtb

+0

c'est correct, cependant, vous êtes limité à seulement pouvoir créer 1 ou 2 clients. – manuel

Répondre

5

Remarque: Cela suppose que DropBox était un mauvais collage dans la question d'origine.

Vous pouvez déplacer les choses et ont 1 constructeur en utilisant params pour un certain nombre de noms, comme celui-ci:

public class ChargeCustomer 
{ 
    private Customer[] customers; 

    public ChargeCustomer(int charge, params string[] names) 
    { 
    customers = new Customer[names.Length]; 
    for(int i = 0; i < names.Length; i++) { 
     customers[i] = new Customer(names[i], charge); 
    } 
    } 
} 

En utilisant cette approche, vous passez juste la première charge et un certain nombre de noms de clients, comme celui-ci :.

new ChargeCustomer(20, "Bill", "Joe", "Ned", "Ted", "Monkey"); 

il va créer un tableau de la bonne taille et le remplir en utilisant la même charge pour tous, et 1 client par nom en boucle à travers les noms passés dans tout ce que dit, il y a probablement un simp beaucoup ler solution globale à votre problème, mais sans apporter de modifications en dehors de la classe Client (hormis les appels du constructeur), ce serait l'approche la plus simple/le plus petit changement.

Questions connexes