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?
精彩评论