我正在通过一些股票旅行以获得信息/许可..等等
我正在使用递归遍历所有子共享。它工作正常,但是用户应该能够将子共享级别限制为特定数字,这是应用程序中的参数?

private static INodeCollection NodesLookUp(string path)
    {
        var shareCollectionNode = new ShareCollection(path);
        // Do somethings

       foreach (var directory in Directory.GetDirectories(shareCollectionNode.FullPath))
        {
            shareCollectionNode.AddNode(NodesLookUp(directory));

        }
        return shareCollectionNode;
    }


此代码将一直降到最低级别,如何在特定级别将其停止?例如获得所有份额直到2个级别?

谢谢。

最佳答案

不要使用全局变量来控制级别,而应在每个递归调用中传递maxLevel和减量。

private static INodeCollection NodesLookUp(string path, int maxLevel)
{
    var shareCollectionNode = new ShareCollection(path);
    if (maxLevel > 0)
    {
        foreach (var directory in Directory.GetDirectories(shareCollectionNode.FullPath))
        {
            shareCollectionNode.AddNode(NodesLookup(directory, maxLevel-1));
        }
    }
    return shareCollectionNode;
}

09-09 19:01