Quelle est la différence, si elle existe, entre un destructeur et une méthode Finalize dans une classe?
J'ai récemment découvert que Visual Studio 2008 estime un destructeur synonyme d'une méthode Finalize, ce qui signifie que Visual Studio ne vous laisse pas 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 le message d'erreur suivant sur l'appel à Finaliser dans le destructeur:
L'appel est ambigu entre les méthodes suivantes ou des propriétés: 'TestFinalize.~TestFinalize()' et 'TestFinalize.Finalize()'
Et si l'appel à Finaliser est commenté, il donne l'erreur suivante:
Type 'ManagementConcepts.Service.TestFinalize' définit déjà un membre appelé Compléter avec les mêmes types de paramètres