【问题标题】:Recursive method in Child of property class in c# [duplicate]c#中属性类子级中的递归方法[重复]
【发布时间】:2020-12-08 00:38:12
【问题描述】:

我的课是下面的项目

public class Item 
{
  public int id { get; set; }
  public readonly List<Item> Children = new List<Item>(); 
}

我有这个类的列表。

List<WorkItem> treeList = new List<WorkItem>();

我将子项递归地添加到项中,这就是它的意思,项可以有“n”个子项,“n”个子项也可以有“n”个子项。

  • 项目
    • 儿童
      • 儿童
        • .......
        • ........
    • 儿童
  • 项目

尽管知道儿童的深度,我如何在所有儿童的项目中进行 foreach。

谢谢

【问题讨论】:

  • 你有没有...尝试过什么?顺便说一句,您已经提到了解决问题的关键字-“递归”。 here 是另一个帮助您解决问题的指针。
  • “我该怎么做 foreach” - 你不会。遍历未知深度的树是递归的工作,而不是迭代。
  • 公平地说,你可以用递归做的所有事情,你都可以迭代地做。有些事情比较简单,有些事情比较简单。在这种情况下,递归会更合适,是的。
  • 既然你想使用foreach,你需要有遍历树的迭代器——我们有很多问题要问——bing.com/…,我选择了几个副本来展示如何构造要使用的枚举器foreach.

标签: c# asp.net


【解决方案1】:

对于集合中的每个项目,您处理该项目,然后递归地对其子集合执行相同的操作:

public static void ProcessAllItemsAndChildren(List<Item> items)
{
    if (items == null) return;

    foreach (var item in items)
    {
        processItem(item);
        processAllChildren(item.Children);
    }
}

public static void processItem(Item item)
{
    // Here's where we actually do something with an individual item
}

【讨论】:

    猜你喜欢
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多