Em C #, qual é a diferença entre um destrutor e um método Finalize em uma classe?

Qual é a diferença, se houver, entre um destrutor e um método Finalize em uma classe?

Descobri recentemente que o Visual Studio 2008 considera um destrutor sinônimo de um método Finalize, o que significa que o Visual Studio não permite 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;
    }
}

Dá o seguinte erro na chamada para finalizar no destruidor:

A chamada é ambígua entre os seguintes métodos ou propriedades: 'TestFinalize. ~ TestFinalize ()' e 'TestFinalize.Finalize ()'

E se a chamada para Finalizar for comentada, ocorrerá o seguinte erro:

Digite 'ManagementConcepts.Service.TestFinalize' já define um membro chamado 'Finalize' com os mesmos tipos de parâmetros

questionAnswers(3)

yourAnswerToTheQuestion