.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 语句 的相关文章

  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 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