Utilisation correcte de l'interface IDisposable en C# : comment éviter les fuites mémoire
Bonjour à tous ! Je suis un développeur C# débutant et je n'arrive pas à comprendre l'interface IDisposable. J'ai lu la documentation, mais j'ai encore des questions.
Voici un exemple de mon code. Je travaille avec des fichiers et des bases de données :
```csharp
public class FileProcessor
{
private StreamReader _reader;
private SqlConnection _connection;
public void ProcessFile(string path)
{
_reader = new StreamReader(path);
_connection = new SqlConnection("...");
// On lit le fichier et on sauvegarde dans la base de données
string line;
while ((line = _reader.ReadLine()) != null)
{
// on sauvegarde dans la base de données
}
// Je ne ferme pas _reader et _connection - le GC ne le fera-t-il pas ?
}
}
```
Je sais que StreamReader et SqlConnection implémentent IDisposable. Mais j'ai plusieurs questions :
1. Dois-je implémenter IDisposable dans ma classe si j'utilise de telles ressources ?
2. Que se passera-t-il si je n'appelle pas Dispose() ? Le GC ne collecte-t-il pas les