析构函数
1.定义:垃圾回收程序最终销毁对象之前调用的方法,该方法称为析构函数
析构函数通常形式如下:
~类名()
{
}
2. 析构函数的声明类似构造函数,除了在析构函数开头要使用 ‘~’,另外要注意,析构函数,没有返回值,且不带任何参数。
3. 析构函数的功能是用来释放一个对象的。在对象删除前,用它来做一些清理工作,它与构造函数的功能正好相反。
垃圾回收机制
1. 什么是垃圾回收?
在编写程序时,会产生很多的数据 比如:int string 变量,这些数据都存储在内存里,如果不合理的管理他们,就会内存溢出导致程序崩溃
C#内置了自动垃圾回收GC,在编写代码时可以不需要担心内存溢出的问题 变量失去引用后 GC会帮我们自动回收.
2. 什么样子的对象才会给回收?
GC只会回收 堆 的内存 ,而 值类型在 栈 中的使用完后马上就会给释放,并不需要 GC 进行处理,堆中的没有被引用或者null的对象才会被回收,静态的成员 会在程序结束后销毁。
3. 什么时候进行垃圾回收?
什么时候回收这些都由操作系统决定,一般不需要进行理会全由系统调用,,明确如有特殊情况的需要进行释放 也可以强制的垃圾回收
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
Test test = new Test();
test = null;
//强制开启回收
GC.Collect();
Console.ReadKey();
}
}
public class Test {
public int a;
~Test() {
Console.WriteLine("ZHIXINGLE");
}
}