ExpertiDict

C# · Intermediário · Inglês · Técnico

IDisposable

/ˌaɪ dɪˈspoʊzəbəl/substantivo

Interface com o método Dispose, usada por tipos que seguram recursos não gerenciados ou escassos, como arquivos, conexões e sockets, para liberá-los de forma determinística.

Onde usar

Aparece quando o analisador avisa CA2000 ou quando uma conexão fica aberta por vazamento. Sempre envolva objetos IDisposable em using para que o Dispose rode mesmo se houver exceção.

Em código

using var c = new Conexao(); // fecha no fim

class Conexao : IDisposable
{
  public void Dispose()
    => Console.WriteLine("fechou");
}

Exemplos

That class implements IDisposable, wrap it in a using.

Essa classe implementa IDisposable, envolva em um using.

The connection leaked because nobody called Dispose.

A conexão vazou porque ninguém chamou Dispose.

Cuidado

Não é o garbage collector chamando por você: o GC não chama Dispose, só o finalizador, se existir, e em hora imprevisível.

Veja também

Todos os termos de C#