该程序应该创建一个汽车,可以有许多部分,并能够设置一个部件,始终有一个相应的价格。
我现在的汽车和零部件课程:
public class Car
{
public Car(string brand, string windshieldType, List<AdditionalCarParts> additionalCarParts) {
Brand = brand;
WindshieldType = windshieldType;
AdditionalCarParts = additionalCarParts;
}
public string Brand { get; set; }
public string WindshieldType { get; set; }
public int Price { get; set; }
public List<AdditionalCarParts> AdditionalCarParts { get; set; }
}
public class AdditionalCarParts
{
public AdditionalCarParts(PartData.PartNames part, int price) {
Part = part;
Price = price;
}
public PartData.PartNames Part { get; set; }
public int Price { get; set; }
}
public class PartData
{
public enum PartNames
{
EngineHeater,
SteeringWheelHeater,
HeadsUpDisplay,
Turbo
}
public static int EngineHeaterPrice() => 3000;
public static int SteeringWheelHeaterPrice() => 800;
public static int HeadsUpDisplayPrice() => 1200;
public static int TurboPrice() => 5000;
}
}如何在我的车中的部件列表中添加一个部件,这个部分有一个价格,例如:var part = new AdditionalCarParts(PartData.PartNames.Turbo)和一个对象是以5000的价格创建的。
甚至应该有一个部件列表,或者有什么更好的实践吗?
谢谢。
发布于 2021-12-17 08:39:48
我不想用班级来控制价格。我会用数据结构作为字典来保存这些信息。
public class AdditionalCarParts
{
public AdditionalCarParts(PartData.PartNames part, int price) {
Part = part;
//Price = price;
}
public enum PartNames
{
EngineHeater,
SteeringWheelHeater,
HeadsUpDisplay,
Turbo
}
private Dictionary<PartNames, int> prices = new Dictionary<PartNames, int>() {
{ PartNames.EngineHeater, 3000 },
{ PartNames.SteeringWheelHeater, 800 },
{ PartNames.HeadsUpDisplay, 1200 },
{ PartNames.Turbo, 5000 },
};
public PartNames Part { get; set; }
public int Price(PartNames name) => prices[name];
}“如何将一个部件添加到我的车中的部件列表中”,->我发现将其添加到列表中是可以的。由于价格已经预定义,所以您不需要在类构造函数中提供价格。
如果价格可能发生变化,您可以使用SetPrice方法来更新字典。我会这样做:
public void SetPrice(PartNames name, int price) {
prices[name] = price;
}https://stackoverflow.com/questions/70390218
复制相似问题