C#析构函数

析构函数用于析构类的实例。
  • 不能在结构中定义析构函数。只能对类使用析构函数。
  • 一个类只能有一个析构函数。
  • 无法继承或重载析构函数。
  • 无法调用析构函数。它们是被自动调用的。
  • 析构函数既没有修饰符,也没有参数。
析构函数的声明如下:
class  myclass
{
        ~myclass()
       {
        }
}
 
构函数隐式地对对象的基类调用 Finalize
 
对继承链中的所有实例递归地调用 Finalize 方法(从派生程度最大的到派生程度最小的)。
 
不应使用空析构函数。 如果类包含析构函数,Finalize 队列中则会创建一个项。 调用析构函数时,将调用垃圾回收器来处理该队列。 如果析构函数为空,只会导致不必要的性能损失。
不应使用空析构函数。如果类包含析构函数,Finalize 队列中则会创建一个项。调用析构函数时,将调用垃圾回收器来处理该队列。如果析构函数为空,只会导致不必要的性能损失。
 
程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的。 垃圾回收器检查是否存在应用程序不再使用的对象。 如果垃圾回收器认为某个对象符合析构,则调用析构函数(如果有)并回收用来存储此对象的内存。 程序退出时也会调用析构函数。
 
可以通过调用 Collect 强制进行垃圾回收,但大多数情况下应避免这样做,因为这样会导致性能问题。
 
当应用程序封装窗口、文件和网络连接这类非托管资源时,应当使用析构函数释放这些资源。当对象符合析构时,垃圾回收器将运行对象的 Finalize 方法。
 
显式地释放资源:
通过实现来自 IDisposable 接口的 Dispose 方法来完成这一点,该方法为对象执行必要的清理。