我正在看一些代码,它有这样的语句:
~ConnectionManager() { Dispose(false); }
该类实现了 IDisposable接口,但我不知道这是否是波浪线(~)的用途。
IDisposable
它用于指示类的析构函数。
与 C + + 一样,它是析构函数; 但是在 C # 中您不显式地调用它,它是在垃圾收集器收集对象时调用的。
~ 通常表示一个解构函数。它在一个对象死亡之前运行。
下面是我找到的 C # 解构器的描述
这是 终结者。老实说,您应该很少需要编写终结器。你真的只需要写一个,如果:
IntPtr
SafeHandle
~ 是破坏者
最后确定
在 C # 中,Finalize 方法执行标准 C + + 析构函数会执行的操作。在 C # 中,不将其命名为 Finalize ——而是使用 C + + 析构函数语法,在类的名称前放置一个波浪(~)符号。
处理掉
最好在 Close()或 Dispose()方法中释放对象,该方法可由类的用户显式调用。Finalize (析构函数)由 GC 调用。
Close()
Dispose()
一次性手机接口告诉世界,您的类持有需要释放的资源,并为用户提供释放这些资源的方法。如果确实需要在类中实现终结器,则 Dispose 方法 应该使用 GC.SuppressFinalize()方法来确保抑制实例的终结。
GC.SuppressFinalize()
用什么?
显式调用析构函数是不合法的。您的析构函数将由垃圾收集器调用。如果确实需要处理希望尽快关闭和释放的宝贵非托管资源(如文件句柄) ,则应该实现 IDisposable 接口。
参见 析构函数(C # 编程指南)。但是请注意,与 C + + 不同,程序员无法控制何时调用析构函数,因为这是由垃圾收集器决定的。