[英]Proper way to add a list of strings that include words with accents to a RichEditText box
[英]What is the proper way to add different strings to objects in same list?
以下示例不代表实际的类别和问题,由于各种原因已对其进行了修改。
我有一个List<EnginePart>
填充了包含byte KeyID, int Length, byte[] Value
。 每个对象都是按顺序创建的,具有自己的含义。 该列表代表“要更换的零件”,我们希望以一种很好的格式将其输出给销售人员,以便他可以将其告知客户。 每个零件都有自己的编号,例如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)遍历列表,并有一堆ifs和WriteLines
2)在创建对象时添加一个字符串,但是在这种情况下,我们仍然具有if语句
3)创建一些枚举并将其用于对象创建
首先,我建议您重写TestClass.ToString()方法,这样就不必构建描述循环中当前对象的字符串。
请参阅https://docs.microsoft.com/dotnet/api/system.object.tostring?view=netframework-4.7.2
然后,也许第二种解决方案就可以了,尽管我们需要更多有关您的目标是什么或类的内容的详细信息。
通常,当您使用“人类可读的字符串表示形式”时,应该覆盖ToString
:
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 :
...
}
}
这样,您可以依靠类自己的实现,而不用用客户端代码创建自己的实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.