正确使用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不是会回收吗?