2010-04-17 106 views
5

下面的代码定义了一个ChargeCustomer类,其中包含“customers”类型的数组。我希望能够根据构造函数参数创建一个具有1个“客户”或2个“客户”的对象。这是在C#这样做的正确方法:创建一个包含对象数组的类

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

}

谢谢!

+0

'DropBox'派生自'Customer'吗?如果没有,则不能将其存储在“客户”数组中。 – dtb 2010-04-17 00:34:36

+0

这是正确的,但是,您仅限于能够创建1或2个客户。 – manuel 2010-04-17 01:25:20

回答

5

注意:这里假定DropBox是原始问题中的错误粘贴。

您可以左右移动的东西,并有使用params为任意数量的名字1个构造函数,像这样:

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

使用这种方法,您只需通过充电用第一和任意数量的客户的名字,像这样:

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

将通过传入的名称循环创建数组正确的尺寸和使用所有相同的电荷填充它,并且每名1个客户之所以这么说,有可能是一个更SIMP对您的问题提供整体解决方案,但不需要在Customer类(除了构造函数调用)之外进行更改,这将是最简单的方法/最小的更改。

相关问题