下面的代码定义了一个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 );
}
Run Code Online (Sandbox Code Playgroud)
}
谢谢!
注意:这假设DropBox在原始问题中是错误粘贴.
你可以移动东西并使用1个构造函数params用于任意数量的名称,如下所示:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用这种方法,您只需先传递费用和任意数量的客户名称,如下所示:
new ChargeCustomer(20, "Bill", "Joe", "Ned", "Ted", "Monkey");
Run Code Online (Sandbox Code Playgroud)
它将创建一个正确大小的数组,并使用相同的费用填充它,并通过循环传入的名称为每个名称1个客户.所有这些,可能是一个更简单的整体解决方案,但没有制作Customer类之外的更改(除了构造函数调用),这将是最简单的方法/最小的更改.