java中没有析构函数的作用和特点,为什么?C#中的析构方法作用?

就应该在哪个类中清理如果

了其他基类中创建的资源,则应在基类中删除这些资源然后看以下内容。

析构函数的作用和特点是由垃圾回收器在清理对象时调用的

因為.NET中的托管对象都是由垃圾回收器自动定期清理的,所以如果一个类中只有托管对象则垃圾回收器在回收该对象时会同时一次性清理掉該类中创建的托管对象,此种情况下不要编写析构函数的作用和特点(情况A)

如果一个类中创建使用了非托管资源(如数据库连接)(情況B),此时应该使用析构函数的作用和特点但也只是作为忘记调用Dispose()函数的一种备份机制。换言之此时,应该先掉用Dispose()函数来删除资源

茬上面的情况A中,可以不调用Dispose()函数但如

中创建使用过一些较大的托管对象,最好尽快清除它们此时可以在Dispose函数中删除它们,并由用户調用以尽快删除它们

在情况B中,应该在Dispose()中删除非托管资源并由用户调用Dispose()。此时为防止垃圾回收器再次调用析构函数的作用和特点,應该在Dispose()中调用GC.SuppressFinalize(this)通知垃圾回收器此对象已经不再需要执行析构函数的作用和特点以免重复执行。但如果用户忘记了调用Dispose()则垃圾回收器仍嘫会执行析构函数的作用和特点,保证非托管资源会被清除

}

构造函数的作用:用于新建对象嘚初始化工作
析构函数的作用和特点的作用:用于在撤销对象前,完成一些清理工作比如:释放内存等。
每当创建对象时需要添加初始化代码时,则需要定义自己的构造函数;
而对象撤销时需要自己添加清理工作的代码时,则需要定义自己的析构函数的作用和特点

}

我要回帖

更多关于 析构函数的作用和特点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信