开发者

keeping track of item number in a recursive call C#

I was wondering if I want to keep track of the number of folders in a recursive method, how can I made it so the counter would not get reseted each time in the loop in below's code?

// 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);
    }
}

The goal here is to display something like "processing folder 15 / 100" to the user. I'm having trouble keeping the folder count without getting it resetted. Assumption: the folders themselves dont have a unique ID.

Thanks.


This code allows you to show how many folders have been processed so far. However it doesn't get the total amount of folders as is tricky: you can't know that until whole recursion has finished:

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);
    }
}


Can you just pass the count variable as a parameter to the method?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜