Sobes.tech
Junior — Middle

Pourriez-vous expliquer l'objectif de l'interface IDisposable et comment l'utiliser dans la gestion des ressources?

sobes.tech IA

Réponse de l'IA

L’interface IDisposable en C# est conçue pour libérer les ressources non managées, telles que les descripteurs de fichiers, les connexions à la base de données, les sockets, etc. Elle contient une méthode Dispose() qui est appelée pour libérer explicitement ces ressources.

L’utilisation de IDisposable permet de contrôler le moment de la libération des ressources, ce qui est important pour éviter les fuites.

Exemple d’utilisation :

class ResourceHolder : IDisposable
{
    private bool disposed = false;

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Libérer les ressources gérées
            }
            // Libérer les ressources non gérées
            disposed = true;
        }
    }

    ~ResourceHolder()
    {
        Dispose(false);
    }
}

Il est également courant d’utiliser la construction using, qui appelle automatiquement Dispose() :

using(var resource = new ResourceHolder())
{
    // travail avec la ressource
}
// Dispose() est appelé automatiquement ici

Ainsi, IDisposable aide à gérer correctement les ressources et à prévenir leur fuite.