c# - 为什么总是调用终结器?

标签 c# .net

我运行了下面的代码,发现终结器总是被调用。但是很多文章说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/

相关文章:

c# - 为什么 Assert.AreEqual 在 <Object, Object> 上失败?类型不匹配?

c# - WPF ToggleButton 状态在鼠标悬停后重置为正常且未选中状态

.net - 基于POCO的多层.NET框架

json - 如何从 JSON 中提取特定对象?

c# - SecurityAttribute.Unrestricted 问题

c# - 如何在 ASP.NET MVC 中读取 PPT 文件?

c# - VS Code 指标如何计算

c# - 整数的静态隐式运算符

c# - .Net 从哪个版本开始支持 httpclient

c# - 模板化通用 AssemblyInfo.cs