Avatar ·

正确使用C#中的IDisposable接口:如何避免内存泄漏

大家好!我是一名C#初学者,一直搞不懂IDisposable接口。我读过文档,但仍有疑问。 以下是我的代码示例。我正在处理文件和数据库: ```csharp public class FileProcessor { private StreamReader _reader; private SqlConnection _connection; public void ProcessFile(string path) { _reader = new StreamReader(path); _connection = new SqlConnection("..."); // 读取文件并保存到数据库 string line; while ((line = _reader.ReadLine()) != null) { // 保存到数据库 } // 我没有关闭 _reader 和 _connection - GC会处理吗? } } ``` 我知道StreamReader和SqlConnection实现了IDisposable。但我有几个问题: 1. 如果我在类中使用这类资源,是否需要实现IDisposable? 2. 如果不调用Dispose()会发生什么?GC不是会回收吗?