【发布时间】:2011-03-23 16:44:30
【问题描述】:
在使用 C# 处理文件时,我习惯于考虑释放相关资源。通常这是一个 using 语句,除非它是一个单一的便捷方法 比如 File.ReadAllLines,它将为我打开和关闭文件。
.Net 4.0 引入了便捷方法 File.ReadLines。这将返回一个 IEnumerable,并被认为是一种更有效的文件处理方式——它避免了将整个文件存储在内存中。为此,我假设枚举器中有一些延迟执行逻辑。
显然,由于此方法返回的是 IEnumerable,而不是 IDisposable,因此我无法接受 using 语句的直觉反应。
我的问题是: 考虑到这一点,使用这种方法释放资源是否有任何陷阱?
调用这个方法是否意味着关联文件锁的释放是不确定的?
【问题讨论】: