En C #, ¿cuál es la diferencia entre un destructor y un método Finalizar en una clase?

¿Cuál es la diferencia, si hay una, entre un destructor y un método de Finalizar en una clase?

Recientemente descubrí que Visual Studio 2008 también considera un destructor con un método Finalize, lo que significa que Visual Studio no le permitirá definir simultáneamente ambos métodos en una clase.

Por ejemplo, el siguiente fragmento de código:

class TestFinalize
{
    ~TestFinalize()
    {
        Finalize();
    }

    public bool Finalize()
    {
        return true;
    }
}

Da el siguiente error en la llamada a Finalizar en el destructor:

La llamada es ambigua entre los siguientes métodos o propiedades: 'TestFinalize. ~ TestFinalize ()' y 'TestFinalize.Finalize ()'

Y si la llamada a Finalize está comentada, da el siguiente error:

El tipo 'ManagementConcepts.Service.TestFinalize' ya define un miembro llamado 'Finalize' con los mismos tipos de parámetros

Respuestas a la pregunta(3)

Su respuesta a la pregunta