gpt4 book ai didi

c# - 控制递归方法深度——获取所有子文件夹

转载 作者:行者123 更新时间:2023-11-30 14:12:59 25 4
gpt4 key购买 nike

我正在浏览一些共享以获取信息/权限..等我正在使用递归遍历所有子共享。它工作正常,但是,用户应该能够将子份额级别限制为特定数量,这是应用程序中的一个参数?

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 个级别之前的所有份额?

谢谢。

最佳答案

如何传递 level 变量并在递归调用的每个级别之后增加它?这将允许您控制当前的递归级别或剩余的递归级别。不要忘记检查空值。

private const int maxDepth = 2;

private static INodeCollection NodesLookUp(string path, int level)
{
if(level >= maxDepth)
return null;

var shareCollectionNode = new ShareCollection(path);
// Do somethings

foreach (var directory in Directory.GetDirectories(shareCollectionNode.FullPath))
{
var nodes = NodesLookUp(directory, level + 1);

if(nodes != null)
shareCollectionNode.AddNode(nodes);

}
return shareCollectionNode;
}

初始级别可以是零索引,例如

NodesLookUp("some path", 0);

关于c# - 控制递归方法深度——获取所有子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15662025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com