如题..谢先.

解决方案 »

  1.   

    如果你对自己程序效率非常关注,那么析构函数是必要的.
    大家都知道.net的标准资源都由垃圾回收自动回收,垃圾回收什么时候工作?通常都是在application退出的时候.很少有情况会在程序运行时回收掉一些已经结束周期的对象.如果出现这种情况那内存已经被耗用的很客观了.
    曾经写过一个效率要求比较高的核心对象,得出以下结论
    高效率的.net程序 能用single实力就用一个,不要多创建.
    dispose需要自己重栽,而且里面如果有大资源的消耗还要直接调用windows API直接释放,不然要等到程序退出垃圾回收才去释放(这点我还没有代码验证,也没有研究过资料,垃圾回收是不是寻找每个已经走到dispose的对象,并且运行dispose.如果不是那么需要及时释放的资源还需要自己写程序控制释放)
      

  2.   

    C#是根据作用域进行垃圾回收的,比如你定义的函数调用完毕之后,垃圾回收机制就会对你在函数中声明的变量进行回收,从大的来说,你关闭了你的程序,垃圾回收机制会在程序退出前,将该程序运行中所产生的资源进行回收。是不是我们不需要处理各种变量了?应根据您的程序作出决定,有些很占资源的变量,如SQL相关类型的对象就很占资源,应使用完之后就释放,对程序保持稳定的性能和效率有好处。
      

  3.   

    你手动可以释放资源,然后告诉收集器,资源由你释放,就可以了.譬如Connction类的对象,占资源较多,你就自己手动释放吧,不要等收集器去帮你了。
      

  4.   

    To: Oceanson(洋之光) ( ) "如果你对自己程序效率非常关注,那么析构函数是必要的."—— 这是错误的。你可以看下.net的垃圾回收的详细过程。《.net框架程序设计》
      

  5.   

    一般性的用.net的自动垃圾回收机制就可以了
      

  6.   

    除非必要,否则还是不写得好。用Dispose
      

  7.   

    有析构函数的话要经过2次垃圾收集才能释放,也可以在Dispose里用释放资源,再用SuppressFinalize方法,不执行Finalize方法,完成垃圾收集