C# 中使用和 .Dispose() 调用之间的区别[重复]

2023-12-12

我最近一直在使用Using,但我想知道它与显式调用.Dispose() 有什么不同。例如,以下之间有什么区别:

using (DisposableTest obj = new DisposableTest()) { /* Some code */ }

and

DisposableTest obj = new DisposableTest();
// Some code
obj.Dispose();

假设 DisposableTest 实现 IDisposable ?


它们有几个不同之处:

  1. using创建一个新的范围。

  2. using calls .Dispose()无论控制如何离开块(如果此时对象不为空)。这与写一个相同try/finally构造放置“如果不为空则.Dispose()“ 在里面finally块,但采用表达意图的格式。

它的存在是为了如果控制以任何方式离开块(发生异常或return or break遇到),则.Dispose()仍然被称为。它也更具表现力,因为它比通用的更好地表明了程序员对于这种情况的意图try/finally构造。

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

C# 中使用和 .Dispose() 调用之间的区别[重复] 的相关文章

  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 朱莉娅,加速评估

    Julia 有一个非常好的功能 可以访问自己的语法树 这使得以编程方式生成新函数变得很容易 但它比普通的 Julia 代码慢得多 例如 julia gt timing time for i in 1 100 tan pi 2 rand en
  • 如何在目标C中以相反的顺序显示数组[重复]

    这个问题在这里已经有答案了 我想以相反的顺序在 UITableView 中显示数据 我几乎不费吹灰之力就能做到这一点 但任何人都可以提供更好的方法来做到这一点 提前致谢 Use NSArray reverseObjectEnumerator
  • 计算两个Python字典中包含的键的差异

    假设我有两个 Python 字典 dictA and dictB 我需要查明是否存在任何密钥dictB但不在dictA 最快的方法是什么 我应该将字典键转换为一组然后继续吗 有兴趣了解您的想法 感谢您的回复 抱歉没有正确陈述我的问题 我的情
  • 合并 R 列表中的字符串向量

    我有一组字符串以及 ID string 格式的相应 ID 作为向量列表R d lt list c SD1 LUSH SD44 CANCEL SD384 FR563 SD32 TRUMPET c SD23 SWITCH SD1 LUSH SD
  • 如何销毁 缓存的 VueJS 组件

    我有一个 Vue 组件 它使用 Vue 的元素进行缓存以保持活动状态 然而 我现在遇到的问题是 一旦我退出一个帐户并在我的 Vue 应用程序上创建一个新帐户 我 保持活动状态 的组件就会反映给新用户 这显然不是与新用户相关 因此 我想在用户
  • Ninject 基于属性值的条件绑定

    我在使用 ninject 定义绑定时遇到问题 我正在使用标准 ASP NET WebForms 应用程序 我已经定义了一个 http 处理程序来在页面和控件中注入依赖项 属性注入 这是我正在尝试做的事情 我正在创建一个自定义组合框用户控件
  • 测试线程优先级。为什么在某些情况下低优先级线程更快?

    我正在尝试测试 2 个线程 一个具有高优先级 另一个具有低优先级 根据我的结果 有时低优先级线程更快 这怎么可能 我通过增加每个线程内的点击变量来测试不同优先级的线程 我也增加或减少了睡眠时间 但没有任何效果 由于我在后台没有运行繁重的程序
  • TCPDF 错误:无法在预期位置找到对象 (8, 0)

    我在使用 TCPDF 和 FPDI 从扫描的 pdf 中删除页面时遇到错误 其他pdf工作正常 ERROR Unable to find object 8 0 at expected location 您的文件可能已损坏 有些扫描仪会生成损
  • 覆盖 HttpClient 中的主机

    我正在使用 HttpClient 但它在 DNS 解析方面存在问题 它为此使用同步方法 因此我使用另一个库来执行 DNS 查询 现在我尝试通过 IP 获取自定义 url 但我需要替换 Host 标头 例如我有网址http fb com但我需
  • 极坐标对列表列中的元素进行计数

    我有带列的数据框b对于列表元素 我需要创建列c计算列表中每一行的元素数量 这是 Pandas 中的玩具示例 import pandas as pd df pd DataFrame a 1 2 3 b 1 2 3 2 5 0 a b 0 1
  • 使用逗号格式化 JTable 列单元格中的整数

    我有一个 Price 列 以普通格式显示整数 如 1000000 我想知道如何使用逗号格式化它 而不影响使用 table getValueAt 检索时的值 有没有像 table setColumnCellFormat decimalForm
  • URL 正则表达式由 regex buddy 传递但由 Dart 失败

    我在 JavaScript 正则表达式中有以下正则表达式 https ftp A Z0 9 A Z0 9 A Z0 9 它尝试验证并清空空格或 URL 然而当我尝试在 Dart 中使用它时RegExp 使用 Perle 风味正则表达式 它不
  • 如何访问 AS3 中的 flashvars,并将它们添加到现有文本字段?

    编辑 我开始意识到我面临的主要问题是我想要一个已经存在于影片剪辑或舞台上的文本字段来从 flashvar 中获取字符串 由于某种原因它不会这样做 如何更改预先存在的文本字段以匹配 flashvar 文本 Html div div
  • 从照片库中删除图像

    在我的应用程序中 我有一个功能可以将图像保存到在照片库中创建的自定义收藏相册中 func save image UIImage if assetCollection nil return PHPhotoLibrary shared perf
  • 具有共享网络的 Html 图像 src 路径在 Firefox 中不起作用

    在我的网页中 我使用图像标签 src 属性指向共享网络位置 即 server images image1 png 确切的脚本是 img src
  • 在 C# 中将树排序为列表

    我有一个 C 实体列表 我的实体定义如下 public class Item the id of an item public Guid ID get set if this is a child item the ParentID is
  • 如何在 phpmyadmin 中多次运行查询?

    我想要一种能够对查询进行 1 000 000 次基准测试的方法 做到这一点最简单的方法是什么 目前 我已经多次搜索发出查询的方法 但没有弹出任何内容 我还遇到过可以在 mysql 命令行中运行的 benchmark 命令 但它似乎有一些限制
  • CodeIgniter + jQuery UI 自动完成 = 由于 CSRF 设置为 TRUE,导致 500 内部服务器错误(带代码)

    这是查看代码
  • 由于线程未挂起,评估失败

    用户 我的 Microsoft VS Code 有问题 当我用方法运行我的代码时 System in read 我遇到问题 评估失败 因为线程未挂起 附 当我使用 javac 和 java 运行文件时 这段代码可以工作 我也有 VS Cod
  • C# 中使用和 .Dispose() 调用之间的区别[重复]

    这个问题在这里已经有答案了 我最近一直在使用Using 但我想知道它与显式调用 Dispose 有什么不同 例如 以下之间有什么区别 using DisposableTest obj new DisposableTest Some code