c# - 如果构造函数抛出异常,是否调用析构函数?

标签 c# c++ destructor finalizer

寻找 C# 和 C++ 的答案。 (在 C# 中,将 'destructor' 替换为 'finalizer')

最佳答案

它适用于 C#(参见下面的代码),但不适用于 C++。

using System;

class Test
{
    Test()
    {
        throw new Exception();
    }

    ~Test()
    {
        Console.WriteLine("Finalized");
    }

    static void Main()
    {
        try
        {
            new Test();
        }
        catch {}
        GC.Collect();
        GC.WaitForPendingFinalizers();
    }
}

这会打印“Finalized”

关于c# - 如果构造函数抛出异常,是否调用析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/188693/

相关文章:

c# - 类析构问题

Fortran final 例程在变量超出范围之前调用自身

c# - 确定主题 ID 以在 CHM 文件中打开它

c++ - 如何限制从 int 到 enum 类的转换?

c++ - 编译错误Arduino C++对象库

c++ - "Polymorphic"非成员函数/运算符,我需要额外的重载吗?

c++ - 不提供显式析构函数是不是不好的做法?

c# - 如何将来自 Web 服务的阿拉伯语值存储在数据库中

c# - BizTalk "correct"技术是解决这个问题的吗?

c# - 正则表达式 IsMatch 随机无法匹配模式