C# 在递归调用C中跟踪项目编号
我想知道,如果我想在递归方法中跟踪文件夹的数量,我如何才能使计数器在下面的代码循环中每次都不会重置C# 在递归调用C中跟踪项目编号,c#,recursion,C#,Recursion,我想知道,如果我想在递归方法中跟踪文件夹的数量,我如何才能使计数器在下面的代码循环中每次都不会重置 // how to keep track of the number of sourceFolder that has been processed? public void recursiveMethod(SPFolder sourceFolder, SPFolder destinationFolder) { int totalNumberOfFiles = sourceFolder.S
// how to keep track of the number of sourceFolder that has been processed?
public void recursiveMethod(SPFolder sourceFolder, SPFolder destinationFolder)
{
int totalNumberOfFiles = sourceFolder.SubFolders.Count;
foreach (SPFolder sourceSubFolder in sourceFolder.SubFolders)
{
if (true)
{
SPFolder destSubFolder = null;
if (true)
{
destSubFolder = doSomething();
}
else
{
destSubFolder = doSomethingElse();
}
}
recursiveMethod(sourceSubFolder, destSubFolder);
}
}
这里的目标是向用户显示处理文件夹15/100之类的内容。我无法在不重置文件夹的情况下保持文件夹计数。假设:文件夹本身没有唯一的ID
谢谢。您可以将count变量作为参数传递给该方法吗?此代码允许您显示到目前为止已处理了多少文件夹。但是,它无法获得文件夹的总数,因为这很棘手:在整个递归完成之前,您无法知道:
public void recursiveMethod(SPFolder sourceFolder, SPFolder destinationFolder)
{
int folderIndex = 1;
recursiveMethod(sourceFolder, destinationFolder, ref folderIndex);
}
public void recursiveMethod(SPFolder sourceFolder, SPFolder destinationFolder, ref folderIndex)
{
int totalNumberOfFiles = sourceFolder.SubFolders.Count;
foreach (SPFolder sourceSubFolder in sourceFolder.SubFolders)
{
// Display processed folder
Console.WriteLine("Processing folder " + folderIndex);
if (true)
{
SPFolder destSubFolder = null;
if (true)
{
destSubFolder = doSomething();
}
else
{
destSubFolder = doSomethingElse();
}
}
// Increase processed folder index
folderIndex++;
// Recursive call
recursiveMethod(sourceSubFolder, destSubFolder, ref folderIndex);
}
}
当然,然后让方法返回计数。如果不方便的话,可以通过引用传递计数。您可以将该参数设置为可选,默认值为0,然后使用它。我不确定这比传入当前计数并返回可能增加的计数有什么好处。