C# 析构函数的使用示例

2024-01-02

我正在阅读有关 C# 中的析构函数的内容,但我无法为其找到合适的用例。

有人可以提供一个用法示例并进行解释吗?

非常非常感谢。

Update
书中的代码示例实现了 Destructor 和 Dispose() 方法,请参阅书中的代码片段。

class MyClass
{
    bool disposed = false; // Disposal status
    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
    ~MyClass()
    {
        Dispose(false);
    }
    protected virtual void Dispose(bool disposing)
    {
        if (disposed == false)
        {
            if (disposing == true)
            {
                // Dispose the managed resources. Factored Dispose

            }
            // Dispose the unmanaged resources.

        }
        disposed = true;
    }
}

Marko


终结器是very现在很少需要了。他们used当您可以直接访问本机资源时需要 - 但现在您通常应该使用SafeHandle http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.safehandle.aspx反而。

乔·达菲有一个关于这个的优秀帖子 http://www.bluebytesoftware.com/blog/PermaLink.aspx?guid=86c71425-57bc-4fcb-b34b-3262812f12cf其中涉及的细节比我自己写的要多——所以去读吧:)

关于术语的快速说明:ECMA 版本的 C# 规范将它们称为终结器; Microsoft 版本的规范始终将它们称为析构函数,并将继续这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 析构函数的使用示例 的相关文章

随机推荐

  • PHP:加密/解密短字符串

    我需要加密和解密短字符串 例如 product1234 我已将 mcrypt encrypt 和 mcrypt decrypt 与各种密码一起使用 问题在于 它总是将扩展字符放入结果字符串中 这会导致我无法控制的应用程序代码的某些方面出现一
  • Xcode 警告:不可变属性不会被解码,因为它是用无法覆盖的初始值声明的

    运行 Xcode 12 我的 Swift 5 Xcode 项目现在每当Decodable or Codable类型声明一个let具有初始值的常数 struct ExampleItem Decodable let number Int 42
  • 设置混合模式来绘制笔划?

    我查了一下 认为我的问题的答案是 否 但这里是 使用 Javascript 和 canvas 标签 我可以用以下命令绘制漂亮的 alpha 混合线stroke 这很有趣 但我想通过设置笔画的混合模式来更进一步 例如 看起来它正在使用经典的
  • 如何使用 Spring Sleuth 记录 MDC?

    我有一个基于 Spring boot sleuth 的应用程序 一切都按预期进行 我现在有这样的日志 2017 05 04 17 55 52 226 INFO alert 692d0eeca479e216 c3c8b680dc29ad02
  • 在 asp.net mvc 中以编程方式中止 OutputCache 持续时间

    我使用 OutputCache 属性在服务器端缓存操作的 html 输出 很好 它有效 但现在我遇到的情况是内容很少发生变化 但当发生变化时 用户在下一个请求时看到新数据至关重要 那么 有没有办法以编程方式中止页面缓存持续时间 是的 可以使
  • 为什么上标数字的 Unicode 字符显示高度不一样?

    为什么 Unicode 数字上标的显示高度不一样 如果您用上标数字组成两位数 这一点尤其明显 其中一些看起来不错 但其余的看起来彼此格格不入 我错过了什么吗 或者事实就是如此 Like jrturton https stackoverflo
  • 可编程地通过扬声器发出和播放声音 C++

    我正在用本机 vc 不是 Net 制作游戏 我正在寻找一种通过真正的扬声器 不是内部扬声器 播放噪音 可能是 8 位或其他 的方法 我了解 PlaySound 但我不想让我的 EXE 变大 我想对声音进行编程 是否有一种 api 方式 有点
  • PHPExcel:如何设置单元格的日期格式

    我需要将日期保存到 Excel 文件 它必须以 dd mm yyyy 格式 或用户的本地日期格式 输出 并被视为日期 以便其中的一列可以正确排序 这是代码
  • 如何捕获另一个进程的未处理异常?

    我想修改或仅加载 NET 可执行文件 然后处理其未处理的异常 我的目标是制作一个可以发送堆栈跟踪的智能处理程序 假设另一个可执行文件是 NET 应用程序 将其加载到新的AppDomain http msdn microsoft com en
  • Selenium 2.50 不适用于 Firefox 45

    我在使用 Firefox 和 webdriver 时遇到错误 45000 毫秒后无法通过端口 7055 连接到主机 127 0 0 1 火狐版本 45 0 硒 2 50 1 Windows 10 64 位 有没有人遇到类似的问题或知道解决方
  • 实施的标签系统中的错误

    我按照 Hartl 的教程制作了一个带有标记系统的 ToDoList 也借助了这个单词指南 https medium com sherzelsmith add a filtering multiple tag system with aut
  • C# - SSL 与 Websphere MQ 版本 7.0.1

    使用 C 连接到启用 SSL 的队列管理器时 需要设置哪些值才能使队列正常工作 我目前收到此错误 原因代码 2393 MQRC SSL INITIALIZATION ERROR 在我的代码中 我设置 MQEnvironment SSLKey
  • 结帐页面上的返回购物车按钮

    有什么解决方案可以显示 返回购物车 WooCommerce 结帐页面上的按钮 实际上只有一个完整的订单按钮 但是如果用户想要更正他的订单 我们需要一个后退按钮 Thanks 是的 可以在结帐页面上使用 返回购物车 按钮显示自定义通知 这是自
  • Powershell / VSTS 构建 - 独立存储凭据/与用户运行脚本无关

    我正在尝试为构建创建一个脚本 用于签出文件 编辑文件并将其重新签入 我希望它在作为开发人员或构建代理运行时能够工作 我有一个类似的解决方案this https stackoverflow com a 25455769 852806 密码存储
  • 将大型本地数据库与服务器数据库同步(MySQL)

    我需要每周将大型 3GB 40 表 本地 MySQL 数据库同步到服务器数据库 这两个数据库完全相同 本地数据库不断更新 大约每周服务器数据库都需要使用本地数据更新 您可以将其称为 镜像数据库 或 主 主 但我不确定这是否正确 目前数据库仅
  • 编辑 swf 文件中的动作脚本

    我已经尝试了 10 个小时来编辑这个 swf 文件 它看起来与反编译器中的预期完全一样 但是当我将其导出到闪存时 它是一个空白画布 并且我无法访问操作脚本 我想做的只是在动作脚本中编辑一些东西 我什至不碰电影 有没有更简单的方法来做到这一点
  • Android Studio,logcat 在应用程序关闭后清理

    自从 Android Studio 更新 1 2 Beta 以来 我的 logcat 遇到了问题 当我运行我的应用程序时 它会像平常一样记录所有内容 然后我的应用程序崩溃了 应用程序说 不幸的是 游戏已停止 几秒钟后 Android 会关闭
  • 使用 Jquery 更改页面标题

    如何进行动态变化
  • trac-admin /path/to/myproject initenv

    我的 Trac 有问题 我无法创建新项目 在这里 在 path to myproject 中 我应该写什么来代替它 事实上 我的项目路径是 C Users Programmer BitNami Trac Stack 项目 每次它在 BitN
  • C# 析构函数的使用示例

    我正在阅读有关 C 中的析构函数的内容 但我无法为其找到合适的用例 有人可以提供一个用法示例并进行解释吗 非常非常感谢 Update书中的代码示例实现了 Destructor 和 Dispose 方法 请参阅书中的代码片段 class My