Uso correcto de la interfaz IDisposable en C#: cómo evitar fugas de memoria
¡Hola a todos! Soy un desarrollador principiante de C# y no logro entender la interfaz IDisposable. Leí la documentación, pero aún tengo preguntas.
Aquí hay un ejemplo de mi código. Trabajo con archivos y bases de datos:
```csharp
public class FileProcessor
{
private StreamReader _reader;
private SqlConnection _connection;
public void ProcessFile(string path)
{
_reader = new StreamReader(path);
_connection = new SqlConnection("...");
// Leemos el archivo y guardamos en la BD
string line;
while ((line = _reader.ReadLine()) != null)
{
// guardamos en la BD
}
// No cierro _reader ni _connection - ¿GC lo hará?
}
}
```
Sé que StreamReader y SqlConnection implementan IDisposable. Pero tengo varias preguntas:
1. ¿Necesito implementar IDisposable en mi clase si uso tales recursos?
2. ¿Qué sucederá si no llamo a Dispose()? ¿GC recolecta...