我本人在开发中通常使用Dispose()方法,即实现IDisposed接口。但在收集的一些程序中看到采用~类名()的方式来做,这象是C++中的用法。由于本人能力不足,搞不清这2种方式到底有什么差别,哪个好些。请各位达人指教。谢谢!

解决方案 »

  1.   

    ~类名,这个是CLR垃圾回收调用的方法,你调不了的.
    IDispose的接口是你可以调用的.简单点说,就是你想立刻垃圾回收(而你不用GC.xxx方法的话),你可以实现IDispose接口,这样写更标准.NET设计规范.其中还有个flag标识,如果是系统自动回收...等等.NET设计规范里面有这方面的说明,你可以看下,我说的不好.
      

  2.   

    如果你的类中没有用到非托管的资源,则不需要实现IDisposed接口,也不需要调用Dispose方法。只有使用到了非托管的资源的时候,比如画刷、画笔、文件操作、数据库操作等的时候才需要实现IDisposed接口或调用基类的Dispose方法。你可以提供析构函数或Finalize方法。Finalize 方法或析构函数是在未能调用 Dispose 的情况下充当防护措施。Finalize 方法调用带有参数的 Dispose 方法,同时传递 false。不应在 Finalize 方法内重新创建 Dispose 清理代码。调用 Dispose(false) 可以优化代码的可读性和可维护性。
      

  3.   

    若要在 C# 中实现 Finalize 方法,您必须使用析构函数语法。