.NET - 用单个 using 语句替换嵌套的 using 语句

2023-11-27

如果您遇到类似这样的带有嵌套 using 语句/资源的 C# 代码:

using (var response = (HttpWebResponse)request.GetResponse())
{
    using (var responseStream = response.GetResponseStream())
    {
        using (var reader = new BinaryReader(responseStream))
        {
            // do something with reader
        }
    }
}

用这样的东西替换它安全吗?

using (var reader = new BinaryReader(((HttpWebResponse)request.GetResponse()).GetResponseStream()))
{
    // do something with reader
}

上面的例子只是嵌套一次性资源的一个例子,所以如果它的用法不完全正确,请原谅我。我很好奇,当您处置最外层资源(本例中为 BinaryReader)时,它是否会为您递归地处置其子级,或者您是否需要使用单独的 using 语句显式处置每个“层”?例如。如果您处置 BinaryReader,它是否应该处置响应流,进而处置响应?考虑最后一句话让我认为您实际上确实需要单独的 using 语句,因为无法保证包装器对象会处理内部对象。是对的吗?


您应该只堆叠您的 using 语句 - 它具有您正在寻找的所需效果:

using (var response = (HttpWebResponse)request.GetResponse())
using (var responseStream = response.GetResponseStream())
using (var reader = new BinaryReader(responseStream))
{
    // do something with reader
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET - 用单个 using 语句替换嵌套的 using 语句 的相关文章

  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • CSS 背景不透明度[重复]

    这个问题在这里已经有答案了 我正在使用类似于以下代码的东西 div style background image url div Text div div 我预计这将使背景的不透明度为 0 4 文本的不透明度为 100 相反 它们的不透明度
  • 使div边框的一部分透明html

    我可以使 div 边框的一部分 从 x1 到 x2 透明吗 如果没有 您可以建议什么方法 我的想法 非常糟糕 是在 canvas 元素中绘制边框并将其放置在 div 元素上 画布主体是透明的 由于 DIV 只有 4 个元素 上 下 左 右
  • 如何四舍五入到最接近的 10(或 100 或 X)?

    我正在编写一个函数来绘制数据 我想为 y 轴指定一个很好的整数max大于数据集的最大值 具体来说 我想要一个函数foo执行以下操作 foo 4 5 foo 6 1 10 maybe 7 would be better foo 30 1 40
  • Google OAuth 2.0 include_granted_scopes 不适用于已安装的应用程序

    我正在尝试使用新的增量授权对于已安装的应用程序 以便将范围添加到现有授权 同时保留现有范围 这是使用新的完成的include granted scopes true范围 但是 无论我尝试什么 重新授权总是会完全覆盖范围 这是我编写的用于演示
  • 删除我的 Rails 答案中不必要的 HTTP 标头

    我目前正在开发一个 API 其中大小很重要 我希望答案包含尽可能少的字节 我优化了 JSON 答案 但 Rails 仍然响应许多奇怪的标头 HTTP 1 1 200 OK Server nginx 0 7 67 Not from Rails
  • 创建一个运行程序的新任务

    我需要定义一个自定义任务来计算主类的名称然后运行它 我在想这样的事情 customTask mainClass compute main class name based on env runMain mainClass jvm args
  • 使用 ggplot2 绘制二部网络图

    我有以下数据框 structure list X1 structure c 1L 1L 1L 1L 1L 1L 1L 1L 2L 2L 2L 2L 2L 2L 2L 2L 2L 2L 3L 3L 3L 3L 4L 4L 4L 4L 4L 5
  • 在 Java 中将 ExecutorService 转为守护进程

    我正在 Java 1 6 中使用 ExecutoreService 只需通过以下方式启动 ExecutorService pool Executors newFixedThreadPool THREADS 当我的主线程完成 以及线程池处理的
  • OPENgl - GL/glut.h 没有这样的文件或目录

    任何人都可以帮我解决以下错误 GL glut h 没有这样的文件或目录 我所做的事情是 安装 MinGW 后 我已将 Path 添加到路径中 环境变量 将 glut h 添加到 C MinGW Include GL 将 glut32 dll
  • XAML 中的 Metro(Windows 应用商店应用程序)日期时间格式

    我有一个 DateTime 属性 这是绑定到文本框的
  • 引导崩溃。如何一次只展开一个div

    我怎样才能一次展示一个 Demo http jsfiddle net tvvq59wv collapser click function this next collapse toggle div div
  • 如何使用 Autofac 注入 AutoMapper?

    将 AutoMapper 注入其他层的正确方法是什么 我读了这个博客post 但是这段代码导致下面的异常 AutoMapper dll 中发生 AutoMapper AutoMapperMappingException 类型的异常 但未在用
  • 限制在 contenteditable 中粘贴(HTML / JS)

    我想阻止用户将不允许的标记粘贴到contenteditable div 我想将粘贴限制为粗体 斜体 删除线 下划线和链接 最好的方法是什么 我正在使用jQuery 这不是重复的JQuery 文本编辑器粘贴而不带格式 我不想在没有格式化的情况
  • Python Selenium Webdriver 检查元素是否不存在需要时间

    在几次 GUI 操作后尝试验证某些按钮不存在 预计不存在 我正在使用 find element by xpath 但它非常慢 超时有什么解决办法吗 实际上 如果未找到指定的元素 WebDriver 的 find element 方法将等待该
  • 有人可以向我解释一下 class << self 吗?

    我第一次进入 Rails 编程 在查看我下载的一些库的代码时 我偶尔会注意到这些代码 class lt lt self def func stuff end end 我尝试在网上搜索解释 但是 在红宝石中 class lt lt foo打开
  • 如何在 WP7 中将多个值数据绑定到单个 TextBlock.Text?

    如何将 2 个属性绑定到单个 TextBlock Text 例如名字和姓氏或当前值和最大值 就像是 IValueConverter public object Convert return string Format 0 max 1 cur
  • 多边形的面积(使用 Python 递归)

    我正在尝试解决 探索Python 书中的一个练习 但是 我想我不理解递归的概念 我写了一些递归函数 所以我知道一些方面 但是 我没有足够的经验 我已经停止学习编程大约一年了 无论如何 让我给你一个完整的问题 多边形可以由 x y 对列表表示
  • 通过字符串调用方法

    我有以下课程 func list function1 function2 function3 class doit object def init self for item in func list if item function1 s
  • Youtube API V3 出现错误 403 禁止

    我的 Youtube Api v3 有问题 问题是想要从上传的视频中获取信息 在执行检索视频信息时 出现错误 403 Forbidden 如果我运行我正在使用的 url 浏览器会返回包含所有视频数据的 Json Visual Studio
  • .NET - 用单个 using 语句替换嵌套的 using 语句

    如果您遇到类似这样的带有嵌套 using 语句 资源的 C 代码 using var response HttpWebResponse request GetResponse using var responseStream respons