我只是好奇为什么我必须使用string[]何时使用Directory.GetDirectories()
string[] directories = Directory.GetDirectories("c:\\");
foreach (var dir in directories)
{
Console.WriteLine(dir);
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能用
List<string> _directories = new List<string>();
_directories = Directory.GetDirectories("c:\\");
Run Code Online (Sandbox Code Playgroud)
Rog*_*mbe 10
因为基本上GetDirectories回报了string[].
无论如何,你可以:
List<string> _directories = new List<string>(Directory.GetDirectories("c:\\"));
Run Code Online (Sandbox Code Playgroud)
...要么:
List<string> _directories = Directory.GetDirectories("c:\\").ToList();
Run Code Online (Sandbox Code Playgroud)
你应该使用Directory.EnumerateDirectories()Anyway - 因为它只会枚举目录,而不是填满整个数组 - 这将使用更少的内存.
来自MSDN:
EnumerateDirectories和GetDirectories方法的不同之处如下:使用EnumerateDirectories时,可以在返回整个集合之前开始枚举名称集合; 当您使用GetDirectories时,您必须等待返回整个名称数组,然后才能访问该数组.因此,当您使用许多文件和目录时,EnumerateDirectories可以更高效.
(除非你真的需要一个填充数组)
编辑:
所以 - 更具体地回答这个问题 - 如果你想返回一个List <>类型,你最好做的事情是:
var dirs = Directory.EnumerateDirectories("c:\\").ToList();
Run Code Online (Sandbox Code Playgroud)
因为这将避免转换的"数组"步骤.
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |