如何编写一个接受单个参数的构造函数?

时间:2018-11-23 08:51:16

标签: c# winforms oop constructor parallel-arrays

我正在创建类似自助服务终端程序的程序,您可以在其中使用Windows窗体订购食物。我必须创建一个Toppings类,其中包含三个数组字段。

  • TopingList作为布尔数组
  • ToppingNames作为字符串数组
  • ToppingPrices为双精度数组

指令说构造函数必须接受一个参数:所有三个并行数组的长度。

我不确定该怎么做。我已经研究并了解了并行数组的工作原理,但是我不知道如何在单个参数中实现并获得所有三个长度。我不确定我是否正确执行此操作?

这是我到目前为止所拥有的:

namespace DeliAndPizza
{
    class Toppings
    {
        bool[] ToppingList = { false, false, false, false, false, false, false, false, false, false, false, false };
        string[] ToppingNames = { "Bacon", "Extra Cheese", "Hot Peppers", "Mayo", "Mushrooms", "Oil", "Onion", "Onion", "Oregano", "Peppers", "Sausage" };
        double[] ToppingPrices = {1.00, 1.50, 0.00, 0.00, 1.00, 0.00, 0.00, 1.00, 0.00, 1.00, 1.00, 0.00 };

        public Toppings()
        {
        }

        public Toppings(bool[] list, string[] name, double[] price)
        {
            this.ToppingList = list;
            this.ToppingNames = name;
            this.ToppingPrices = price;
        }
    }
}

这是给定的类图:

click here

1 个答案:

答案 0 :(得分:1)

假设所有数组的长度相同,则只需将length参数作为单个参数传递给构造函数,然后在其中初始化数组的长度,而不是在定义字段的位置定义长度:

namespace DeliAndPizza
{
    class Toppings
    {
        bool[] ToppingList;
        string[] ToppingNames;
        double[] ToppingPrices;

        public Toppings(): this(12) {} //default length is 12
        public Toppings(int length)
        {
            ToppingList = new bool[length];
            ToppingNames = new string[length];
            ToppingPrices = new double[length];
        }

        public Toppings(bool[] list, string[] name, double[] price)
        {
            this.ToppingList = list;
            this.ToppingNames = name;
            this.ToppingPrices = price;
        }
    }
}

一个旁注;当前,您正在使用bool[] ToppingList;之类的定义。如果您希望能够在类的实例上访问此值(而不是仅在类内部),则需要将它们公开/理想地将其转换为属性,如下所示:

public bool[] ToppingList {get;set;}

如果您不希望外部使用它们,则命名约定将使用小写的首字母;例如

bool[] toppingList;

Here's the MS documentation on naming standards

官方指南仅确定外部可见的名称;因此,您的课程中定义的私有字段不会包含在上述文档中。但是,there are conventions