Garbage Collector in .Net is in deterministic which means that we can never be sure when the garbage collector be invoked.
Unlike destructors in C++ which are automatically called when an object is in no longer in user (by using delete operator), in C# destructors are nothing but finalize methods in disguise, with a call to base class's finalize method.