В чем разница, если таковая существует, между деструктором и методом Finalize в классе?
Недавно я обнаружил, что Visual Studio 2008 считает деструктор синонимом метода Finalize, что означает, что Visual Studio не позволит вам одновременно определять оба метода в классе.
Например, следующий фрагмент кода:
class TestFinalize
{
~TestFinalize()
{
Finalize();
}
public bool Finalize()
{
return true;
}
}
Дает следующую ошибку при вызове Finalize в деструкторе:
Вызов неоднозначен между следующими методами или свойствами: 'TestFinalize. ~ TestFinalize()' и 'TestFinalize.Finalize()'
И если комментарий Finalize закомментирован, он дает следующую ошибку:
Тип 'ManagementConcepts.Service.TestFinalize' уже определяет член, называемый "Завершить" с теми же параметрами