您需要处置对象并将它们设置为 null 吗?

2023-12-30

您是否需要处理对象并将它们设置为 null,或者当它们超出范围时垃圾收集器会清理它们吗?


当对象不再被使用并且垃圾收集器认为合适时,对象将被清理。有时,您可能需要设置一个对象null为了使其超出范围(例如您不再需要其值的静态字段),但总的来说通常不需要设置为null.

关于处置对象,我同意@Andre。如果物体是IDisposable it is 处理掉它是个好主意当您不再需要它时,特别是当该对象使用非托管资源时。不处置非托管资源将导致内存泄漏.

您可以使用using一旦你的程序离开范围就自动释放一个对象的语句using陈述。

using (MyIDisposableObject obj = new MyIDisposableObject())
{
    // use the object here
} // the object is disposed here

其功能相当于:

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

您需要处置对象并将它们设置为 null 吗? 的相关文章

  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 私有模板函数

    我有一堂课 C h class C private template
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?

    我试图尝试将 Protobuf ValueProviderFactory 添加到 MVC3 以便我可以选择 MIME 类型并将原始数据反序列化为操作参数的对象 我还可以使用它来更改默认的 Json 序列化器 看着JsonValueProvi
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • 使用小米5 MIUI 8 Android Studio进行调试

    我无法从 Android Studio 启动应用程序 当我单击 运行 时 我选择我的设备 并且出现以下消息 但事实并非如此 该应用程序未安装在设备中 在 运行 控制台中 出现以下内容 04 22 15 53 08 Launching app
  • WScript.Shell Exec 的实时控制台输出

    我花了一天的大部分时间寻找解决方案 我开始认为这可能无法满足我的要求 我的基本设置是运行从 Excel VBA 代码调用的 vbscript vbs vba 代码必须继续运行并保持 vbscript 运行 但会不时使用以下命令对其进行监视E
  • 每次进行更改时回收应用程序池

    我制作了一个多语言网站 其中在同一网站上包含 4 个域 因此也包含 4 种不同的语言和网站树 但是 每次我需要发布对网站的新更改或其他更改 例如更新模板 脚本等 时 我都必须回收应用程序池 以使更改在以访问者身份查看网站时显示 我该如何解决
  • 如何在 athena 上的字符串数据类型上提取月份名称

    SELECT sales invoice date MONTH DATE TRUNC month CASE WHEN TRIM sales invoice date THEN DATE 1999 12 31 ELSE DATE PARSE
  • 复制表更改 1 列的值并将其插入到同一个表中

    标题基本上概括了所有内容 以及我在这里想要完成的任务 更多信息 我得到了一个有 4 列的表格 我需要它的精确副本 但只需要更改一列的值 假设该列名为客户编号 即 123456 其他值并不重要 如何复制整个表并将客户编号更改为 123457
  • TPL 数据流:将传入集合展平为顺序项目

    我正在使用 TPL 数据流构建一个应用程序 实际上我有以下问题 我有一个变换块var tfb1 new TranformBlock
  • 在 Scala 中扫描巨大的 JSON 文件以获取可反序列化的数据

    我需要能够处理大型 JSON 文件 在文件中迭代 流式传输时从可反序列化的子字符串实例化对象 例如 我没有使用 JSON 完成此操作 我希望有人能为您提供交钥匙解决方案 而是使用 XML 完成此操作 这里是一种处理方法 它基本上是一个借助流
  • 我可以重新解释 constexpr 函数的参数吗?

    我想编写一个在编译时求值的函数 它需要一个指向 4 字节数组的指针 并输出一个与该数组具有相同位模式的 int 所以我想出了 constexpr int f const char p return reinterpret cast
  • 在java中计算日期/时间差[重复]

    这个问题在这里已经有答案了 我想要计算2个日期之间的差异以小时 分钟 秒为单位 我的代码有一个小问题 String dateStart 11 03 14 09 29 58 String dateStop 11 03 14 09 33 43
  • 如何显示来自 PHP 的 JavaScript 警报?

    我不用 PHP 编写代码 但我有一个从网上下载的表单 它工作得很好 我想做的是在这里添加一些代码 可以启动 JS 脚本 简单的警报框 说 谢谢您的表单已提交 此 mailer php 文件收到表单后
  • 循环位 C

    我试图循环遍历 unsigned char 的位 但我不确定从哪里开始 最终 我将对这些位执行其他按位操作 例如 和 xor 等 可以通过多种方式循环位 当您移动值时 您可以执行破坏性循环 并测试初始位或最终位 具体取决于您想要枚举位的顺序
  • Airflow - 无法在 Kubernetes Pod Operator 任务中对资源使用 jinja 模板

    Airflow 无法在 Kubernetes Pod Operator 任务中对资源使用 jinja 模板 能够使用 jinja 模板作为环境变量 镜像 但无法使用资源来指定 CPU 和内存 请求和限制 For apache airflow
  • 从 shell 脚本 cron 调用 python 脚本

    我有一个 shell 脚本 cron 它从同一目录调用 python 脚本 但是当这个 cron 执行时 我没有从 python 脚本中获得预期的输出 当我手动执行它时 我的 python 脚本的输出是预期的 我提供了 python 脚本路
  • 有更好的普通 JS 方法来查找嵌套对象中的任何错误值吗?

    如果我有一个对象 例如 const obj field1 subfield1 true subfield2 true field2 subfield3 true field3 subfield4 false subfield5 true 然
  • Node.js SSL 服务器冻结,CPU 高,未崩溃但无连接

    我希望任何人都可以帮助我解决这个问题 在我们公司 我们正在设置一个连接到 Java Push 服务器的 Node js 服务器 我使用 https 模块而不是 http 和 SLL 证书 节点和客户端之间的连接是通过socket io在服务
  • 如何在Python中按行总和对矩阵进行升序排序?

    回答了完全相同的问题here https stackoverflow com questions 18721094 quick way to sort an array with respect to row sum in matlab但在
  • Drupal 6 中特定节点的自定义模板?

    我知道有大量不同的自定义模板文件 例如 page tpl php 和 node tpl php 等 但是有没有办法为特定节点 ID 制作自定义模板 这在node 3 tpl php 中不起作用 但是有没有办法做到这一点 更新代码 funct
  • 使用 Python 交换字符串中每对相邻字符的最简单方法是什么?

    我想交换字符串中的每对字符 2143 变成 1234 badcfe 变成 abcdef 我怎样才能在Python中做到这一点 单行 gt gt gt s badcfe gt gt gt join s x x 2 1 for x in ran
  • Flutter for 循环生成小部件列表

    我有这样的代码 但我希望它迭代整数数组以显示动态数量的子项 return Container child Column children
  • 您需要处置对象并将它们设置为 null 吗?

    您是否需要处理对象并将它们设置为 null 或者当它们超出范围时垃圾收集器会清理它们吗 当对象不再被使用并且垃圾收集器认为合适时 对象将被清理 有时 您可能需要设置一个对象null为了使其超出范围 例如您不再需要其值的静态字段 但总的来说通