Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在递归调用C中跟踪项目编号_C#_Recursion - Fatal编程技术网

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,然后使用它。我不确定这比传入当前计数并返回可能增加的计数有什么好处。