下面的代码定义了一个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 :(得分:9)
注意:这假设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个客户。所有这些,可能会有一个更简单的整体解决方案,但是,如果不在Customer类之外进行更改(除了构造函数调用),这将是最简单的方法/最小的更改。