析构实际上就是Finalize方法,写析构就成了终止化对象。
首先什么情况下才需要写析构,什么情况下不需要写析构。
析构函数里应该有哪些操作,不应该有哪些操作。

解决方案 »

  1.   

    直接重写Finalize方法的比较少,一般会去实现IDispose接口,
    关闭一些重要资源,比如数据库连接,IO连接,非托管对象的释放等。Finalize中不应该再引发异常。
      

  2.   

    析构函数肯定会被调用。什么时候被调用是不确定的。C#依赖垃圾回收器回收资源
    析构函数用于析构类的实例。
    析构函数是由垃圾回收器在清理对象时调用的
    http://topic.csdn.net/u/20090407/09/50860655-1d4d-4feb-843d-77de2b3996df.html
      

  3.   

    补充一下,就是因为Finalize方法被GC调用的时机是不确定的。
    如果有重要资源需要及时释放的话,应该实现IDisposable接口而不是析构函数。
    而且调用方,应该主动,显示的调用IDisposable对象的Dispose方法。或者用using语句块。