В C # инициализаторы членов вызываются перед конструктором, тогда как в VB.NET они вызываются после конструктора.
Время выполнения вообще не гарантирует вызова Finalize
.
Утилизация и финализация предназначены только для очистки неизрасходованных ресурсов. Попытка очистить управляемые ресурсы в финализаторе, например, вызов Dispose для внутренних участников доставит вам неприятности, потому что они, возможно, уже были завершены.
Мне нравится быть проще и использовать финализатор, чтобы обнаружить и записать неприятное сообщение об ошибке, сообщающее разработчику исправить код. Попытка выяснить, безопасно ли выполнять работу, которую должен был сделать Dispose
, слишком легко ошибиться и, как правило, не стоит тратить время на циклы.