当迭代次数未知时创建嵌套 for 循环

Mic*_*ips 3 c# asp.net-mvc

我有与此类似的 json:

{
  Name: Level 1,
  Children: [
    {
       Name: Level 2,
       Children: [
        {
           Name: Level 3,
           Children: [
             {
                Name: Level 4,
                Children: [
                  {
                     Name: Level 5,
                     Children: []
                  }
                ]
              }
            ]
          }
        ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

目前深度级别为五,我正在尝试使用与此类似的嵌套 for 循环:

for()
{
   for()
   {
       for()
       {
            for().....
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种方法可以在不使用这么多 for 循环的情况下生成它,因为目前的深度级别是五,但可能会更多。

suj*_*lil 5

考虑一下,在稍后的某个时刻,您决定添加更多级别。使用这种循环方法,您需要修改代码,添加更多嵌套循环来处理这种情况。所以我们可以说这不是一个好方法,对于这种特定情况,我建议您使用如下递归方法:

public void RecursiveMethod(object inputCollection)
{
   // process here
   if(Check for child collection)
   {
       RecursiveMethod(inputCollection.Children)
   }
   // process here no more child exists
}
Run Code Online (Sandbox Code Playgroud)

** 注意:** 在上面的代码中使用适当的类型object,因为它是一个 JSON,您可以使用一种序列化方法来获取集合,但您仍然需要递归方法来处理从序列化器输出的集合