Финализатор - это последняя попытка убедиться, что что-то очищено правильно, и обычно он зарезервирован для объектов, которые обертывают неуправляемые ресурсы, такие как неуправляемые дескрипторы и т. Д., Которые не будут собирать мусор.
Редко пишется финализатор. К счастью (и в отличие от IDisposable
), финализаторы не нужно распространять; так что если у вас есть ClassA
с финализатором и ClassB
, который включает ClassA
, то ClassB
не нуждается в финализаторе - но вполне вероятно, что и 1010 *, и ClassB
будут реализовывать IDisposable
.
Для управляемого кода обычно достаточно IDisposable
. Даже если вы не очистите правильно, в конце концов, управляемые объекты будут собраны (при условии, что они освобождены).