Poz*_*hil 3 c# destructor finalization
为什么我的终结器没有被调用?
using System;
class Program
{
static void Main(string[] args)
{
Test test = new Test();
}
}
class Test
{
public Test()
{
Console.WriteLine("Start");
}
~Test()
{
Console.WriteLine("End");
}
}
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了一下,没有找到合适的。我期待最后控制台输出“End”。
进程终止时不需要执行所有终结器。终结器不应该用于绝对必须发生的事情。
如果您确实愿意,可以调用GC.WaitForPendingFinalizers()- 以及其他GC.方法来首先提示垃圾收集 - 但在生产代码中这样做通常是有问题的设计的标志。终结器并不是为了以这种方式工作而设计的。一般来说,它们在 C# 代码中应该极其罕见;根据我的经验,它们通常用于记录“您似乎没有处理掉这个,而您确实应该这样做 - 最终会进行清理,但这是应该更迫切地清理的事情”的警告。