首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向同一列表中的对象添加不同字符串的正确方法是什么?

向同一列表中的对象添加不同字符串的正确方法是什么?
EN

Stack Overflow用户
提问于 2019-04-04 16:48:18
回答 2查看 58关注 0票数 0

下面的示例并不代表实际的类和问题,它由于各种原因而被改编。

我有一个用包含byte KeyID, int Length, byte[] Value的对象填充的List<EnginePart>。每个对象都是按顺序创建的,并具有自己的含义。该列表表示“要更换的部件”,我们希望以一种良好的格式将其输出给销售人员,这样他就可以将其告知客户。每个部件都有自己的id,比如说0x20 -气缸,0x40 -机油过滤器。

现在,我想以一种很好的方式向每个对象添加/显示一个人类可读的字符串,而不需要遍历foreach和检查

if(enginePart.key =="0x20") Console.WriteLine("Cylinder rotation count is " + enginePart.value)

if(enginePart.key =="0x40") Console.WriteLine("Oil filter only filters " + enginePart.value + " of oil)

有没有其他更好的方法呢?不可能为每个引擎部件创建一个新类。

到目前为止,我已经想出了3种可能的解决方案;

1)遍历列表并拥有一堆if和WriteLines

2)在创建时向对象添加一个字符串,但在这种情况下,我们仍然有if语句

3)创建一些枚举,并在创建对象时使用它

EN

Stack Overflow用户

回答已采纳

发布于 2019-04-04 17:17:39

通常,当你想要一个“人类可读的字符串表示”时,你应该重写ToString

代码语言:javascript
复制
class EnginePart
{
    byte KeyID { get; set; }
    int Length { get; set; }
    byte[] Value { get; set; }

    public override string ToString()
    {
        return KeyId == "0x40" ? "Oil filter only filters " + value :
               KeyId == "0x20" ? "Cylinder rotation count is " + value :
               ...
    }
}

这样你就可以依赖于类自己的实现,而不是在客户端代码中创建自己的实现。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55511628

复制
相关文章

相似问题

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