我有这个功能:
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 每次我调用该函数时,它将从数组中返回下一个字符串。 因为即时通讯使用recrusive函数并从recrusive调用此离线函数,我希望每次从数组中返回下一个字符串。
现在它现在只返回数组中的最后一个目录,就是这样。
我该怎么做?
答案 0 :(得分:4)
最简单的方法 - 使用yield
:
IEnumerable<string> offline(string dir)
{
...
... instead of directory = dirs[i] do
yield return dirs[i];
}