我正在查看一些代码,它具有以下语句:
~ConnectionManager()
{
Dispose(false);
}
该类实现了IDisposable
接口,但是我不知道这是否是tilde(〜)用于的一部分。
我正在查看一些代码,它具有以下语句:
~ConnectionManager()
{
Dispose(false);
}
该类实现了IDisposable
接口,但是我不知道这是否是tilde(〜)用于的一部分。
Answers:
〜是析构函数
完成
在C#中,Finalize方法执行标准C ++析构函数将执行的操作。在C#中,您没有将其命名为Finalize,而是使用C ++析构函数语法在类名之前放置一个波浪号(〜)符号。
处理
最好将对象放置在类的用户可以显式调用的Close()
或Dispose()
方法中。Finalize(析构函数)由GC调用。
该IDisposable的接口告诉世界,你的类保存到需要处置资源,并为用户提供一种方式来释放他们。如果确实需要在类中实现终结器,则Dispose方法应使用该GC.SuppressFinalize()
方法来确保实例的终结被抑制。
使用什么?
显式调用析构函数是非法的。您的析构函数将被垃圾收集器调用。如果确实要处理您想尽快关闭并处置的宝贵的非托管资源(例如文件句柄),则应实现IDisposable接口。
Finalize
对于继承链中从最高派生到最少派生的所有实例,该方法都是递归调用的”。请注意,这不是你的可继承析构函数得到的,但相同的行为。
请参见析构函数(C#编程指南)。但是请注意,与C ++不同,程序员无法控制何时调用析构函数,因为这是由垃圾回收器确定的。