一下援引《c#高级编程》c#析构函数的执行会延迟对象最终从内存中删除的时间。没有析构函数的对象会在垃圾收集器的一次处理中从内存中删除,但有析构函数的对象需要两次处理才能删除:第一次调用析构函数时,没有删除对象,第二次调用才真正删除对象。
我一直理解的是在c#中无需定义析构函数(即使在有堆内存请求的情况下),垃圾收集器会自动不定时地去删除那些没有引用存在的堆内存块,并且排序堆内存。但是如果定义了析构函数还会优先使用析构函数去释放堆内存,此后无需垃圾收集器再去处理了。可是文章中指出的调用析构函数无法删除对象怎么理解???
这里说的第一次、第二次又是什么含义??