C# · Avançado · Inglês · Técnico
finalizer
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