Uso correto da interface IDisposable em C#: como evitar vazamentos de memória
Olá a todos! Sou um desenvolvedor C# iniciante e não consigo entender a interface IDisposable. Li a documentação, mas ainda tenho dúvidas.
Aqui está um exemplo do meu código. Eu trabalho com arquivos e bancos de dados:
```csharp
public class FileProcessor
{
private StreamReader _reader;
private SqlConnection _connection;
public void ProcessFile(string path)
{
_reader = new StreamReader(path);
_connection = new SqlConnection("...");
// Lê o arquivo e salva no banco de dados
string line;
while ((line = _reader.ReadLine()) != null)
{
// salva no banco de dados
}
// Eu não fecho _reader e _connection - o GC fará isso?
}
}
```
Eu sei que StreamReader e SqlConnection implementam IDisposable. Mas tenho várias perguntas:
1. Preciso implementar IDisposable na minha classe se uso esses recursos?
2. O que acontece se eu não chamar Dispose()? O GC coleta memória