我正在查看一些代码,它有这样的声明:
~ConnectionManager() { Dispose(false); }
该类实现了IDisposable接口,但我不知道这是否是波浪号(~)用于的一部分。
IDisposable
~ 是析构函数
敲定
在 C# 中,Finalize 方法执行标准 C 析构函数会执行的操作。在 C# 中,您不将其命名为 Finalize - 您使用 C 析构函数语法,即在类名之前放置一个波浪号 (~) 符号。
处置
最好在类的用户可以显式调用的Close()或方法中处理对象。Dispose()Finalize(析构函数)由 GC 调用。
Close()
Dispose()
IDisposable 接口告诉世界您的类持有需要释放的资源,并为用户提供释放它们的方法。如果确实需要在类中实现终结器,则 Dispose 方法 应 使用该GC.SuppressFinalize()方法来确保抑制实例的终结器。
GC.SuppressFinalize()
用什么?
显式调用析构函数是不合法的。垃圾收集器将调用您的析构函数。如果您确实处理想要尽快关闭和处置的宝贵非托管资源(例如文件句柄),则应该实现 IDisposable 接口。