首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建具有名称和价格的对象-产品-最佳实践C#

创建具有名称和价格的对象-产品-最佳实践C#
EN

Stack Overflow用户
提问于 2021-12-17 08:21:48
回答 1查看 200关注 0票数 0

该程序应该创建一个汽车,可以有许多部分,并能够设置一个部件,始终有一个相应的价格。

我现在的汽车和零部件课程:

代码语言:javascript
复制
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的价格创建的。

甚至应该有一个部件列表,或者有什么更好的实践吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-12-17 08:39:48

我不想用班级来控制价格。我会用数据结构作为字典来保存这些信息。

代码语言:javascript
复制
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方法来更新字典。我会这样做:

代码语言:javascript
复制
public void SetPrice(PartNames name, int price) {
    prices[name] = price;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70390218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档