У чому різниця між Finalize та Dispose?
Фіналізатор дозволяє провести очищення об'єкта перед тим, як його буде видалено збирачем сміття. Якщо розробник забув викликати у об'єкта метод Dispose(), то у фіналізаторі можна звільнити некеровані ресурси і таким чином уникнути їхнього витоку.