如何编写接受单个参数的构造函数?
How to write a constructor that accepts a single argument?
我正在创建类似售货亭程序的东西,您可以在其中使用 windows 表格订购食物。我必须创建一个 Toppings Class,其中包含三个数组字段。
- 作为布尔数组的 ToppingList
- 作为字符串数组的 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;
}
}
}
这是给定的 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.
我正在创建类似售货亭程序的东西,您可以在其中使用 windows 表格订购食物。我必须创建一个 Toppings Class,其中包含三个数组字段。
- 作为布尔数组的 ToppingList
- 作为字符串数组的 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;
}
}
}
这是给定的 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.