定义:
析构函数,是类的一个特殊的成员函数,当类的对象超出范围时执行。
简单来讲,析构函数,是用来帮助我们来进行废弃对象的内存回收的机制。
语法:
~类名()
{
}
示例:
class Car
{
~Car() //析构函数
{
//.......
}
}
注意点:
1.只能对类使用析构函数。
2.一个类只能有一个析构函数。
3.无法继承或重载析构函数。
4.无法调用析构函数。 它们是被自动调用的。
5.析构函数既没有修饰符,也没有参数。
6.不应使用空析构函数。 如果析构函数为空,只会导致不必要的性能损失。
作用:
程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的。 垃圾回收器检查是否存在应用程序不再使用的对象。 如果垃圾回收器认为某个对象符合析构,则调用析构函数(如果有)并回收用来存储此对象的内存。 程序退出时也会调用析构函数。
通常,与运行时不进行垃圾回收的开发语言相比,C# 无需太多的内存管理。 这是因为 .NET Framework 垃圾回收器会隐式地管理对象的内存分配和释放。 但是,当应用程序封装窗口、文件和网络连接这类非托管资源时,应当使用析构函数释放这些资源。 当对象符合析构时,垃圾回收器将运行对象的Finalize方法。
继承链中析构函数的释放顺序
class First
{
~First()
{
Console.WriteLine("First's destructor is called.");
}
}
class Second : First
{
~Second()
{
Console.WriteLine("Second's destructor is called.");
}
}
class Third : Second
{
~Third()
{
Console.WriteLine("Third's destructor is called.");
}
}
class TestDestructors
{
static void Main()
{
Third t = new Third();
}
}
/* Output :
Third's destructor is called.
Second's destructor is called.
First's destructor is called.
*/