C#析构函数(转载)
⼀、C#析构函数
1. 析构函数的定义与注意的问题
析构函数⽤于释放被占⽤的系统资源。
析构函数的名字由符号“~”加类名组成。
使⽤析构函数时,应该注意下⾯的问题:
只能在类中使⽤析构函数,不能在结构中使⽤析构函数。
⼀个类只能有⼀个析构函数。
不能继承或重载析构函数。
析构函数只能被⾃动调⽤。
析构函数没有任何修饰符、没有任何参数、也不返回任何值。
2. 调⽤析构函数
垃圾回收器决定了析构函数的调⽤,我们⽆法控制何时调⽤析构函数。
垃圾回收器检查是否存在应⽤程序不再使⽤的对象。如果垃圾回收器认为某个对象符合析构,则调⽤析构函数(如果有)并回收⽤来存储此对象的内存。
程序退出时会调⽤析构函数。
我们可以通过调⽤Collect强制进⾏垃圾回收,但是请不要这样做,因为这样做可能导致性能问题。
⼆、构造函数与析构函数的区别
构造函数和析构函数是在类中说明的两种特殊的成员函数。
构造函数是在创建对象时,使⽤给定的值将对象初始化。
writeline函数析构函数⽤于释放⼀个对象。在对象删除前,使⽤析构函数做⼀些清理⼯作,它与构造函数的功能正好相反。
三、⽰例
using System;
namespace Test
{
class Program
{
class First // 基类First
{
~First() // 析构函数
{
Console.WriteLine("~First()析构函数");
}
}
class Second : First // Second类从First类派⽣
{
~Second() // 析构函数
{
Console.WriteLine("~Second()析构函数");
}
}
class Third : Second // Third类从Second类派⽣
{
~Third() // 析构函数
{
Console.WriteLine("~Third()析构函数");
}
}
static void Main(string[] args)
{
// C#析构函数
Third Third1 = new Third(); // 创建类的实例
}
}
}
程序运⾏时,这三个类的析构函数将⾃动被调⽤,调⽤顺序是按照从派⽣程度最⼤的(~Third())到派⽣程度最⼩的(~First())次序调⽤的,和构造函数的调⽤顺序正好相反。
运⾏结果:
~Third()析构函数
~Second()析构函数
~First()析构函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论