c# - 设计递归方法的建议

标签 c# design-patterns recursion

例如,我有一个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/

相关文章:

c# - 单例代码摘录,一道面试题

model-view-controller - 关于 Java EE 6 架构的问题

java - 打印出最短路径的所有单元格坐标

c# - 通过索引从 List 获取元素是否线程安全

c# - C#中如何过滤多个字符串

ios - UITableView 的委托(delegate)类在 mvc 中的位置是什么?

c - 在 C 中处理长递归产生式时如何防止堆栈溢出?

Typescript 循环函数引用

c# - 使用泛型作为函数的返回值是不好的做法吗?

c# - 如何与 friend 同时在 Visual Studio 上编码?