下面的代码定义了一个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 ); }
}
谢谢!
解决方法
注意:这假设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类之外的更改(除了构造函数调用),这将是最简单的方法/最小的更改.