






















在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的别名而已。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。