0

我正在创建类似于信息亭程序的东西,您可以在其中使用 Windows 窗体订购食物。我必须创建一个 Toppings 类,其中包含三个数组字段。

  • ToppingList 作为 bool 数组
  • 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;
        }
    }
}

这是给定的类图:

点击这里

4

1 回答 1

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;

这是关于命名标准的 MS 文档

官方指南只确定外部可见的名称;所以在你的类中定义的私有字段不在上面的文档中。但是,有一些约定

于 2018-11-23T08:58:18.157 回答