如何编写没有List的代码?

时间:2018-06-16 20:34:28

标签: c# .net

如何在没有List的情况下编写此代码?我必须在没有任何其他类(集合,泛型......)的情况下编写此代码,仅使用String数组。我也无法使用Directory.GetDirectories(path, "*", SearchOption.AllDirectories);参数来查找所有目录。

注意:您可以编写其他功能,在String数组中添加路线。

static void WriteDirectories(string rootDir) {
        // Write the first item
        Console.WriteLine(rootDir);

        // Create a list of sub directories
        List<string> subDirs = new List<string>();
        String[] arr = Directory.GetDirectories(rootDir);
        for(int i =0; i < arr.Length; i++) {
            subDirs.Add(arr[i]);
        }

        for (int i = 0; i < subDirs.Count; i++) {
            // Write the current sub directory item
            Console.WriteLine(subDirs[i]);

            // Add any sub folders under this item to our list
            subDirs.AddRange(Directory.GetDirectories(subDirs[i]));
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以简单地编写一个组合两个数组而不是AddRange方法的函数,并将所有目录放在String数组中。

static void WriteDirectories(string path) {
            Console.WriteLine(path);

            String[] dir = Directory.GetDirectories(path);

            for (int i = 0; i < dir.Length; i++) {
                Console.WriteLine(dir[i]);
                Add(ref dir , Directory.GetDirectories(dir[i]));
            }
        }

        static void Add(ref String[] dir , String[] subDir) {
            if (subDir.Length == 0) return;

            String[] temp = new String[dir.Length];
            for (int i = 0; i < temp.Length; i++) {
                temp[i] = dir[i];
            }

            dir = new String[dir.Length + subDir.Length];
            for (int i = 0; i < temp.Length; i++) {
                dir[i] = temp[i];
            }

            for (int i = 0; i < subDir.Length; i++) {
                dir[i + temp.Length] = subDir[i];
            }
        }