2010-04-17 13 views
5

Il codice seguente definisce una classe ChargeCustomer che contiene una matrice di tipo "clienti". Voglio essere in grado di creare un oggetto con 1 "cliente" o 2 "clienti" in base ai parametri del costruttore. E 'questo il modo giusto per farlo in C#:Creazione di una classe con matrice di oggetti

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

}

Grazie!

+0

Il 'DropBox' deriva da' Cliente'? In caso contrario, non è possibile memorizzarlo in una matrice 'Cliente'. – dtb

+0

che è corretto, tuttavia, si è limitato a essere in grado di creare solo 1 o 2 clienti. – manuel

risposta

5

Nota: ciò presuppone che DropBox sia stato un errore di inserimento nella domanda originale.

È possibile spostare le cose intorno e avere 1 costruttore utilizzando params per qualsiasi numero di nomi, in questo modo:

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

Usando questo approccio è sufficiente passare prima la carica e qualsiasi numero di nomi di clienti, come questo :.

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

si creerà una matrice la dimensione corretta e riempirlo con la stessa carica per tutti e 1 clienti ogni nome con scorrendo i nomi passati in detto questo, c'è probabilmente una molto semp Per una soluzione globale al problema, ma senza apportare modifiche al di fuori della classe Customer (a parte le chiamate del costruttore), questo sarebbe l'approccio più semplice/il più piccolo cambiamento.