c# - 如何将 DirectoryInfo.EnumerateDirectories 转换为 List
问题描述
这个问题与我之前的帖子有关。在这种情况下,我尝试构建一个类型为 的变量,而不是检索目录的全名List<DirectoryInfo>
。
这段代码不太好用
DirectoryInfo dirInfo = new DirectoryInfo(path);
List<DirectoryInfo> dirList = dirInfo.EnumerateDirectories("*.", SearchOption.AllDirectories);
抛出错误:
无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List”
而这个版本:
List<DirectoryInfo> dirList = dirInfo.EnumerateDirectories<DirectoryInfo>("*.", SearchOption.AllDirectories);
抛出此错误:
非泛型方法“DirectoryInfo.EnumerateDirectories()”不能与类型参数一起使用。
任何建议或提示将不胜感激。
解决方案
EnumerateDirectories()
返回IEnumerable<DirectoryInfo>
而不是List<DirectoryInfo>
. 它们是不同的类型。
你可以在最后放一个ToList()
:
DirectoryInfo dirInfo = new DirectoryInfo(path);
List<DirectoryInfo> dirList = dirInfo.EnumerateDirectories("*.", SearchOption.AllDirectories).ToList();
但这是天真的选择。它通常对性能没有那么好。有一个理由 IEnumerable<DirectoryInfo>
被选中。它在内存使用和即时/延迟操作方面具有一些不错的优势。
因此,更好的解决方法可能是将行首的类型名称替换为var
:
DirectoryInfo dirInfo = new DirectoryInfo(path);
var dirList = dirInfo.EnumerateDirectories("*.", SearchOption.AllDirectories);
推荐阅读
- json - Spring Kafka 监听器使用 JSON 并推断域对象
- javascript - 尝试从 collectionGroup 中读取时,为什么会出现权限错误?
- python - 向 GeoPandas 图例添加自定义名称
- javascript - 为什么我的商店会重置我的授权?
- python - 用一系列反斜杠和正斜杠替换正斜杠
- maximo - 在通信模板中链接记录
- flutter - 在flutter inappWebview中自动填充登录凭据
- python - 如何使用 Python 替换 PDF 中的文本?
- android - 使用具有静态和滚动内容的工具栏时内容重叠
- excel - 选择工作表类的方法失败(不确定原因)