Thinking and Researching

数字冰块的思考空间

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
在C++中经常可以看到格式为 ~ClassName() 的析构函数,而在C#中“析构函数”很少被提及。
到底是怎么回事?做个试验:
using System;

public class Test
{
    
public Test()
    
{
        Console.WriteLine(
"Test被构造。");
    }

    
    
~Test()
    
{
        Console.WriteLine(
"Test被析构。");
    }

}


public class Entrypoint
{
    
static void Main()
    
{
        Test t 
= new Test();
    }

}

用 ILDASM 打开,能够看见 ~Test() 被 Finalize()所取代。查阅MSDN,看到 Object.Finalize() 的说明是

允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。

在 C# 中,使用析构函数语法表示终止程序。

看来为了统一基础结构并使用GC,C#的析构函数形式在.NET中只是Finalize的别名而已。

posted on 2004-07-24 18:30  数字冰块  阅读(762)  评论(0编辑  收藏  举报