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

How to write a constructor that accepts a single argument?

我正在创建类似售货亭程序的东西,您可以在其中使用 windows 表格订购食物。我必须创建一个 Toppings Class,其中包含三个数组字段。

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

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

这是我目前拥有的:

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

这是给定的 class 图:

假设所有数组的长度相同,您只需将 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; 之类的定义。如果您希望能够在 class 的实例上访问此值(而不是仅在 class 内部访问),您需要将它们设为 public / 理想情况下将它们转换到属性,像这样:

public bool[] ToppingList {get;set;}

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

bool[] toppingList;

Here's the MS documentation on naming standards.

官方指南仅确定外部可见的名称;因此上述文档未涵盖您 class 中定义的私有字段。然而,there are conventions.