日期:2014-05-16  浏览次数:20945 次

Unload与析构函数
C#是否也和C++一样,给编个缺省的析构函数?

以窗体对象为例
如果有,它会执行什么东西,或者做些什么处理?默认的窗体的Unload方法呢?

如果在窗体对象被带走的时候需要执行一些方法,一般要写在unload中,还是析构函数中?
------解决方案--------------------
你可以写,在里面写上释放内存的代码,当GC回收时,就会执行
------解决方案--------------------
当然写在Unload里面,非托管资源的释放应该写在Dispose方法中。

至于析构函数,千万不要用它来“释放内存”。因为析构函数是CLR调用的,调用它的时机非常不确定。一般来说,只有非常特殊的场合才使用析构函数。严格来说,C#里的析构函数,不过是重写的Finallize方法的语法糖。
------解决方案--------------------
简单来说,如果你对C#的析构函数没有比较深入的了解那么最好的选择就是不要写析构函数。
------解决方案--------------------
C#最好使用IDispose,而不是析构函数。