繁体   English   中英

如何追加List <string> 在以下递归函数中

[英]How do I append List<string> in the following recursive function

 class FileSetGenerator
     {
         public static void FileSetGen(string[] arg, string path, string pattern, oout List<string> files)
         {
        int count = 0;
        files = new List<string>();
        if(arg.Contains("/R"))
        {
            Console.WriteLine("Called");
            files.AddRange(Directory.GetFiles(path, pattern));
            count++;
            //List<string> dummy = new List<string>();
            foreach (string file in files)
                Console.WriteLine(file);
            string[] dirs = Directory.GetDirectories(path);
            foreach (string dir in dirs)
                FileSetGen(arg, dir, pattern, out files);

        }
        else
            files.AddRange(Directory.GetFiles(path, pattern));
    }
}

我试图使用此递归调用获取所有以指定目录(路径)为根的文件。 所以我特别希望用pwd及其子目录中的所有文件填充List <>结构。 但每次调用递归函数时,List <>结构都会获取子目录的文件,并且先前的文件会被覆盖。 有没有什么方法可以在每次执行递归调用时附加新数据? 我在c#编码。

要解决此问题,请使用ref而不是out作为函数的最后一个参数,并且不要在函数内重新创建它。 而是在调用函数中创建一次列表,并将其作为ref参数发送到此函数。 然而, Directory.GetFiles()已经完成了你想要实现的目标。

您需要将初始化列表传递给函数的第一次调用。

但好像你正在目录中搜索带有模式的所有文件。 您可以使用接受SearchOption的 Directory.GetFiles重载,您可以将其指定为AllDirectories以获取所有子文件夹中的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM