2010-04-17 14 views
5

El siguiente código define una clase ChargeCustomer que contiene una matriz de tipo "clientes". Quiero poder crear un objeto con 1 "cliente" o 2 "clientes" en función de los parámetros del constructor. ¿Es esta la manera correcta de hacerlo en C#:Crear una clase con una matriz de objetos

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

}

Gracias!

+0

¿'DropBox' deriva de' Cliente'? Si no, no puede almacenarlo en una matriz 'Cliente'. – dtb

+0

que es correcto; sin embargo, está limitado a que solo pueda crear 1 o 2 clientes. – manuel

Respuesta

5

Nota: Esto supone que DropBox fue un error de composición en la pregunta original.

Puede mover las cosas y tienen 1 constructor usando params para cualquier número de nombres, de esta manera:

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

uso de este enfoque que acaba de pasar la primera carga y cualquier número de nombres de clientes, como este :.

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

se va a crear una matriz del tamaño correcto y llenarlo con el mismo cargo para todos, y 1 cliente por el nombre de bucle a través de los nombres aprobados en dicho todo esto, es probable que haya una gran siend Solución global para su problema, pero sin realizar cambios fuera de la clase Cliente (aparte de las llamadas al constructor), este sería el enfoque más simple/el cambio más pequeño.

Cuestiones relacionadas