Sobes.tech
Junior — Middle

Qual é a finalidade da interface IDisposable no .NET e como usá-la?

sobes.tech IA

Resposta da IA

A interface IDisposable no .NET destina-se a libertar manualmente recursos não geridos (por exemplo, descritores de ficheiros, ligações a bases de dados) quando o objeto já não é necessário.

Utilização:

  • A classe implementa IDisposable e substitui o método Dispose(), no qual liberta os recursos.
  • No código onde o objeto é utilizado, Dispose() é chamado explicitamente ou é utilizada a construção using, que garante a chamada a Dispose() mesmo em caso de exceções.

Exemplo:

class ResourceHolder : IDisposable
{
    private bool disposed = false;
    public void Dispose()
    {
        if (!disposed)
        {
            // Libertar recursos
            disposed = true;
            GC.SuppressFinalize(this);
        }
    }

    ~ResourceHolder()
    {
        Dispose();
    }
}

// Utilização
using (var resource = new ResourceHolder())
{
    // trabalho com o recurso
}
// Aqui, Dispose() é chamado automaticamente