1

我有这个功能:

private string offline(string targetDirectory)
        {
            string directory = ""; 
            try
            {
                string[] dirs = Directory.GetDirectories(targetDirectory,"*.*",SearchOption.TopDirectoryOnly);
                for (int i = 0; i < dirs.Length; i++)
                {
                    directory = dirs[i];
                }
            }
            catch
            {

            }
            return directory;

        }

例如,如果 targetDirectory 是 c:\,那么我会进入数组 14 个目录。现在我希望每次我离线调用函数时它都会返回第一个字符串 c:\$Recycle.Bin 然后它会返回 c:\test 并且每次我调用函数时它都会返回数组中的下一个字符串. 由于我使用递归函数并从递归调用此离线函数,因此我希望它每次返回数组中的下一个字符串。

现在就像现在一样,它将仅返回数组中的最后一个目录,仅此而已。

我该怎么做 ?

4

1 回答 1

4

最简单的方法 - 使用yield

IEnumerable<string> offline(string dir)
{
    ...
    ... instead of directory = dirs[i] do
    yield return dirs[i];
}
于 2012-10-24T22:34:31.043 回答