如何在C#中定制的类中添加析构函数,以便在不再需要时将其销毁?
答案 0 :(得分:6)
答案 1 :(得分:5)
不要使用析构函数。 改为使用Dispose()和Finalize()。
这是一篇关于这个主题的非常好的文章:When and How to Use Dispose and Finalize in C#
答案 2 :(得分:1)
析构函数不用于销毁对象,用于在销毁对象时清理已使用的资源。析构函数通常用于清理任何非托管资源,例如使用Interop / p / invoke时。
class Person
{
// Destructor
~Person()
{
// Cleanup resources that the object used here.
}
}
答案 3 :(得分:1)
要小心!!!你应该尽量避免在C#中使用析构函数。
当你的代码是:
class Person
{
// Destructor
~Person()
{
// Clean-up resources that the object used here.
}
}
编译器正在为您生成此代码:
class Person
{
// Destructor
public override void Finalize()
{
// your clean up
base.Finalize();
}
}
正如您所看到的,您只是在实施Finalize方法。在.Net平台中,Finalize方法的错误实现会使您的应用程序出现内存泄漏,如果正确实现,则使用Finalize方法实现的对象需要释放2个GC调用。
如果你来自C ++,你应该忘记一个析构函数的想法,你不需要它们GC应该照顾你正常的类。
答案 4 :(得分:0)
答案 5 :(得分:0)
~className(){}