C#中的析构函数

简介:
很早前写过这么一篇文章:.NET中IDisposable接口的基本使用,地址:http://www.cnblogs.com/carysun/archive/2008/06/15/Dispose.html
本文作为前面文章的一个补充,看下面代码:
using System;
class A
{
    public A()
    {
        Console.WriteLine("构造函数A");
    }
    ~A()
    {
        Console.WriteLine("析构函数A");
    }
}

class B : A
{
    public B()
    {
        Console.WriteLine("构造函数B");
    }
    ~B()
    {
        Console.WriteLine("析构函数B");
    }

}
class C : B
{
    public C()
    {
        Console.WriteLine("析构构造函数C");
    }

    ~C()
    {
        Console.WriteLine("析构函数C");
    }
}
class App
{
    public static void Main()
    {
        C c = new C();
        Console.WriteLine("对象创建 ");
        Console.WriteLine("销毁对象");
        Console.ReadLine();
        c = null;
       // GC.Collect();
        Console.Read();
    }

}
执行结果如下:

构造函数 A
构造函数 B
构造函数 C
对象创建
销毁对象

析构函数 C
析构函数 B
析构函数 A
请按任意键继续. . .

当我们输入回车,将c设为null后,析构函数并没有执行

Console.WriteLine("销毁对象"); 
Console.ReadLine();
c = null;

我们再次回车让程序结束后析构函数执行了,这是因为析构函数的执行是.NET的垃圾回收器来控制的,如果我们想立即销毁的话有两种方式:

1.调用:GC.Collect();

2.实现IDisposable 接口的Dispose方法,具体实现请参考此文.NET中IDisposable接口的基本使用,地址:http://www.cnblogs.com/carysun/archive/2008/06/15/Dispose.html

本文转自生鱼片博客园博客,原文链接:http://www.cnblogs.com/carysun/archive/2009/11/07/csharp-destructors.html,如需转载请自行联系原作者
相关文章
|
2月前
|
编译器 数据库连接 C++
31析构函数
31析构函数
10 0
|
6月前
|
C++
析构函数
析构函数是一种特殊的函数,用于在对象的生命周期结束时清理资源。它与构造函数相反,通常用于释放在对象创建期间分配的资源(如内存、文件句柄等)。析构函数的名称通常以一个波浪线(~)开头,如 ~MyClass()。
57 6
|
2月前
|
编译器 C语言 C++
C++构造函数,析构函数
C++构造函数,析构函数
|
3月前
|
编译器 C++
【c++】构造函数和析构函数
【c++】构造函数和析构函数
【c++】构造函数和析构函数
|
3月前
this函数和析构函数
this函数和析构函数
9 0
|
4月前
|
存储 编译器 Linux
构造函数与析构函数的问题总结
构造函数与析构函数的问题总结
41 0
|
11月前
|
搜索推荐 编译器 C++
【C++构造函数与析构函数】
【C++构造函数与析构函数】
|
编译器 C++
C++——this指针和析构函数
C++——this指针和析构函数
C++——this指针和析构函数
|
Java
析构函数(方法)
析构函数(方法)
59 0
|
Java 程序员
析构器——Finalizer
析构器——Finalizer
77 0