我运行了下面的代码,发现终结器总是被调用。但是很多文章说finalizer是non-deterministic的。
class Test
{
Test()
{
throw new Exception();
}
~Test()
{
Console.WriteLine("Finalizer is called");
}
static void Main()
{
try
{
new Test();
}
catch { }
}
最佳答案
在你的情况下它仍然是不确定的。不确定性意味着某事发生所需的时间无法预先计算。请注意,无法正确确定某事何时发生并不一定意味着随机时间,但在大多数情况下它们大致相同。
从不需要控制汽车刹车、工业机器人或航天飞机的人通常不应该关心一段代码是否是确定性的。
注意:我已经编写了控制工业机器人的代码,因此有时我需要关心我的代码是否在我希望的准确时刻执行。 p>
关于c# - 为什么总是调用终结器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2083638/