Quelle est la différence, s'il y en a une, entre un destructeur et une méthode Finalize dans une classe?
J'ai récemment découvert que Visual Studio 2008 considère un destructeur comme synonyme d'une méthode Finalize, ce qui signifie que Visual Studio ne vous permettra pas de définir simultanément les deux méthodes dans une classe.
Par exemple, le fragment de code suivant:
class TestFinalize
{
~TestFinalize()
{
Finalize();
}
public bool Finalize()
{
return true;
}
}
Donne l'erreur suivante sur l'appel à Finalize dans le destructeur:
L'appel est ambigu entre les méthodes ou propriétés suivantes: 'TestFinalize. ~ TestFinalize ()' et 'TestFinalize.Finalize ()'
Et si l'appel à Finalize est commenté, cela donne l'erreur suivante:
Le type 'ManagementConcepts.Service.TestFinalize' définit déjà un membre appelé 'Finalize' avec les mêmes types de paramètres