简而言之:保持文件流打开不是一个好主意,因为它是非托管资源。
在 .NET 框架架构中,如果在代码中没有正确管理,所有非托管资源都会导致内存大泄漏。
如果你说 - “我不想让它超出范围。然后垃圾收集器最终会调用 Dispose,杀死流。但我想保持流打开。”
垃圾收集器将调用Finalize
方法(析构函数),而不是Dispose
方法。终结器将调用Dispose(false)
它不会处理底层流。StreamReader
如果您需要直接使用底层流,您应该可以离开范围之外。只要确保在适当的时候手动处理底层流即可。