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