我有一个对象列表的列表,如List<List<Event>>
。将对象列表转换为字符串
如何覆盖ToString()
,使每个内部列表显示在一行命令提示符中?
public override string ToString(List<List<Event>>)
{
return ?
}
我有一个对象列表的列表,如List<List<Event>>
。将对象列表转换为字符串
如何覆盖ToString()
,使每个内部列表显示在一行命令提示符中?
public override string ToString(List<List<Event>>)
{
return ?
}
public override string ToString(List<List<Event>> lle)
{
StringBuilder res=new Stringbuilder(your_guess_of_lenght_here);
foreach(List<Event> le in lle){
foreach(Event e in le){
res.Append(e+"any_separator_of_elements");
}
res.Append("\n");
}
return res.ToString();
}
像这样的事情?我不知道你的事件字符串表示,你可能想改变它。
不妨用'res.AppendLine();''res.Append(“\ n”);'' – Tdorno
或'Environment.NewLine'(实际上由'AppendLine()'粘贴) – Kartoffel
如果我有没有关于'res'变量的值的猜测? – Roboticist
public override string ToString(List<List<Event>> events)
{
return string.Join(", ",
events.SelectMany((list) => list)
.Select((ev) => ev.ToString()));
}
.SelectMany()
Event
为字符串重复使用.ToString()
编辑1 鉴于基本方法签名string ToString()
没有你可能需要引用一个字段或属性类,而不是定义一个单独的string ToString(List<List<Event>> events)
任何参数。
public class SO
{
List<List<Event>> events;
public override string ToString()
{
return string.Join(", ",
events.SelectMany((list) => list)
.Select((ev) => ev.ToString()));
}
}
public override string ToString(List<List<Event>> listOflistOfEvents)
{
StringBuilder result = new StringBuilder();
listOflistOfEvents.ForEach(delegate(List<Event> listOfEvents)
{
result.AppendLine();
listOfEvents.ForEach(events => result.Append(events + ","));
});
return result.ToString();
}
不知道你正在使用的本作,但可能是值得的,以JSON或YAML序列化呢? –
@凯文史密斯:我不这么认为。这些事件只是对应于有限状态机的一些字符串。我需要的是一种打印它们的方法。这个任务的序列化听起来很复杂。 – Roboticist