Jaka jest różnica między destruktorem a metodą Finalize w klasie, jeśli taki istnieje?
Niedawno odkryłem, że program Visual Studio 2008 uważa destruktor za synonim metody Finalize, co oznacza, że program Visual Studio nie pozwala na jednoczesne definiowanie obu metod w klasie.
Na przykład następujący fragment kodu:
class TestFinalize
{
~TestFinalize()
{
Finalize();
}
public bool Finalize()
{
return true;
}
}
Daje następujący błąd w wywołaniu Finalize w destruktorze:
Wywołanie jest niejednoznaczne między następującymi metodami lub właściwościami: „TestFinalize. ~ TestFinalize ()” i „TestFinalize.Finalize ()”
A jeśli wywołanie Finalize jest zakomentowane, powoduje następujący błąd:
Typ „ManagementConcepts.Service.TestFinalize” już definiuje element członkowski o nazwie „Finalize” z tymi samymi typami parametrów