ExpertiDict

C# · Avançado · Inglês · Técnico

finalizer

/ˈfaɪnəˌlaɪzɚ/substantivo

Método ~Tipo() chamado pelo GC numa thread própria antes de liberar o objeto, como rede de segurança para recursos nativos. Sua execução é tardia e não garantida.

Onde usar

Aparece no padrão Dispose, em que o finalizador libera o recurso caso o usuário tenha esquecido o Dispose. Objetos com finalizador sobrevivem a uma coleta extra, o que os torna mais caros.

Em código

class Nativo : IDisposable
{
  ~Nativo() => Liberar();
  public void Dispose()
  { Liberar(); GC.SuppressFinalize(this); }
  void Liberar() { }
}

Exemplos

Add a finalizer only as a safety net.

Adicione um finalizador só como rede de segurança.

Call GC.SuppressFinalize in Dispose.

Chame GC.SuppressFinalize no Dispose.

Cuidado

Não implemente finalizador à toa nem use para lógica de negócio: prefira SafeHandle para recursos nativos.

Sinônimos

destrutor

Veja também

Todos os termos de C#