Ovde imamo problem sa terminologijom, a za to krivim činjenicu da C# sintaksa za finalizer izgleda isto kao C++ sintaksa za destruktor, mada su u pitanju dve različite stvari.
Kad u C++/CLI napišeš destruktor, kompajler generiše ceo "Dispose" pattern - i Dispose i Finalize. U C#-u, kad napišeš "destruktor", kompajler generiše samo Finalize metod, a Dispose moraš da napraviš ručno.
Inače, sve to što si napisao je potpuno tačno ako zameniš "destruktor" sa "finalizer".