Qual é a diferença, se houver, entre um destruidor e um método Finalize em uma classe?
Recentemente, descobri que o Visual Studio 2008 considera um destrutor sinônimo de um método Finalize, o que significa que o Visual Studio não permitirá que você defina simultaneamente os dois métodos em uma classe.
Por exemplo, o seguinte fragmento de código:
class TestFinalize
{
~TestFinalize()
{
Finalize();
}
public bool Finalize()
{
return true;
}
}
Fornece o seguinte erro na chamada para Finalize no destruidor:
A chamada é ambígua entre os seguintes métodos ou propriedades: 'TestFinalize. ~ TestFinalize ()' e 'TestFinalize.Finalize ()'
E se a chamada para Finalize for comentada, ocorrerá o seguinte erro:
O tipo 'ManagementConcepts.Service.TestFinalize' já define um membro chamado 'Finalize' com os mesmos tipos de parâmetro