例如,我有一个Task类,可以报告完成任务需要多长时间。但是,此类可以包含相同类型的子任务。
public class Task
{
public string Name{get; set;}
public DateTime Start {get; set;}
public DateTime Finish {get; set;}
public List<Task> SubTasks {get; set;}
public TimeSpan GetDuration()
{
return Finish - Start;
}
public TimeSpan GetTotalDuration()
{
//How?
}
}
子任务可以深入几个级别,目前没有逻辑限制。我不确定如何设计负责遍历子任务并累积TimeSpan值的方法?
任何优雅的想法赞赏吗?
谢谢
最佳答案
我会做:
public TimeSpan GetTotalDuration()
{
if (SubTasks != null)
return GetDuration() + SubTasks.Sum(t => t.GetTotalDuration());
return GetDuration();
}
使用Linq。
编辑:处理SubTasks为null的情况(通过Kristof的答案)。
关于c# - 设计递归方法的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9291866/