Sobes.tech
Junior — Middle

Qual é a diferença entre um destruidor e o método Finalize na gestão de recursos de um objeto?

sobes.tech IA

Resposta da IA

Em C#, o destrutor (finalizador) e o método Finalize são essencialmente o mesmo, mas com diferentes níveis de acesso e uso.

  • Destrutor: é um açúcar sintático que é compilado como uma sobrescrita do método Finalize. É declarado na classe como ~ClassName().
  • Finalize: é um método chamado pelo coletor de lixo antes de remover o objeto, se for sobrescrito.

Diferenças:

  • O destrutor é chamado automaticamente pelo coletor de lixo, não podendo ser chamado explicitamente.
  • O método Finalize pode ser sobrescrito para liberar recursos não gerenciados.

Exemplo de destrutor:

class MyClass {
    ~MyClass() {
        // Liberação de recursos
    }
}

Importante: o uso de destrutores/Finalize reduz o desempenho devido ao trabalho adicional do coletor de lixo, portanto recomenda-se implementar a interface IDisposable e o método Dispose para liberar recursos de forma explícita.