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.