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 に答える