Stream.Dispose 是否总是调用 Stream.Close (和 Stream.Flush)

2023-11-21

如果我有以下情况:

StreamWriter MySW = null;
try
{
   Stream MyStream = new FileStream("asdf.txt");
   MySW = new StreamWriter(MyStream);
   MySW.Write("blah");
}
finally
{
   if (MySW != null)
   {
      MySW.Flush();
      MySW.Close();
      MySW.Dispose();
   }
}

我可以打电话吗MySW.Dispose()并跳过关闭,即使它已提供?是否有任何 Stream 实现无法按预期工作(例如 CryptoStream)?

如果没有,那么下面的代码就是错误的:

using (StreamWriter MySW = new StreamWriter(MyStream))
{
   MySW.Write("Blah");
}

我可以直接调用 MySW.Dispose() 并 跳过关闭,即使它是 假如?

是的,这就是它的用途。

有没有 Stream 的实现 不能按预期工作(例如 加密流)?

可以安全地假设,如果一个对象实现IDisposable,它会自行妥善处理。

如果没有,那就是一个错误。

如果不是,那么下面的内容就很糟糕 代码:

不,该代码是处理实现的对象的推荐方法IDisposable.

更多优秀信息位于已接受的答案中关闭并处置 - 调用哪个?

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

Stream.Dispose 是否总是调用 Stream.Close (和 Stream.Flush) 的相关文章

  • 平滑手绘曲线

    我有一个允许用户绘制曲线的程序 但这些曲线看起来不太好 它们看起来摇摇欲坠 而且是手绘的 所以我想要一种能够自动平滑它们的算法 我知道平滑过程中存在固有的模糊性 因此它不会每次都完美 但这种算法似乎确实存在于多个绘图包中 并且它们工作得很好
  • 使用 C# 将多个音频样本混合到单个文件中

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个能够创建音频文件 mp3 或 wav 的库 NAudio http www codeple
  • 警告 C4800:“int”:强制值为 bool“true”或“false”(性能警告)

    我的代码中有这个问题 bool CBase isNumber return id MID NUMBER bool CBase isVar return id MID VARIABLE bool CBase isSymbol return i
  • 在没有 epsilon 的情况下可以将浮点数与 0.0 进行比较吗?

    我知道 要比较两个浮点值 需要使用一些 epsilon 精度 因为它们并不精确 但是 我想知道是否存在边缘情况 我不需要那个 epsilon 特别是 我想知道这样做是否总是安全的 double foo double x if x lt 0
  • C# 无法捕获 SerializationException

    我的程序在加载序列化文件的部分遇到问题 如果文件无法反序列化 我希望很好地失败 但由于某种原因 我的程序将中断而不是进入 catch 子句 这是我的代码 using FileStream fs new FileStream openFile
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 如何使用默认电子邮件客户端发送电子邮件?

    我想使用系统的默认电子邮件客户端 雷鸟 outlook 等 从 net windows 窗体应用程序发送电子邮件 我想预设主题和正文 我认为有一种方法可以通过向 Windows 资源管理器发送类似的内容来做到这一点 mailto 电子邮件受
  • 更改 Xamarin.Forms 应用中顶部栏和底部栏(ControlsBar、StatusBar)的颜色

    无论如何 即使后面需要特定于平台的代码 也可以更改顶部栏 蓝色的 和底部栏 黑色的 的颜色吗 我希望添加对浅色和深色模式的支持 因此我希望能够在运行时更改它 有可能的 Android Using Window SetStatusBarCol
  • VB.NET - 有没有办法在委托中使用可选参数? (或者计划允许这样做?)

    据我了解 在 VS2008 附带的 VB 版本中 委托中不可能有可选参数 但是 我想知道将来是否有任何解决方法或计划将此功能合并到 VB NET 中 我想做的事 Public Delegate Function Deserializer O
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • DataGridView 行背景颜色没有改变

    我想根据加载时的特定条件更改 DGV 行的背景颜色 即使在 Windows 窗体中也是如此 但我看不到任何 DGV 行的颜色有任何变化 谁能告诉我如何解决这个问题 private void frmSecondaryPumps Load ob
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • 连接到没有元数据的网络服务

    我想连接到此网络服务 https training api temando com schema 2009 06 server wsdl https training api temando com schema 2009 06 serve
  • 如何从 Access 数据库中读取“是/否”值作为布尔值?

    帮我找回YES NO来自 MS Access 的布尔格式数据类型 我尝试解析它 但它总是返回 false 更新 实际上不是问题抱歉 它确实接受 YES NO 作为布尔值 OleDbconnection dbConnect new OleDb
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • “1个未解决的外部”C++

    我已经检查了所有文件之间的连接以及类和函数定义 但每次我尝试运行我的程序时 它都会阻止我并告诉我它有 1 个未解析的外部 该程序应该打开多个文件 一个 学生 文件和一个 成绩 文件 从中读取数据 然后使用 查询文件 来查找数据 找到查询中要
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 当我的进程被终止时到底会发生什么?

    我有一个包含本机代码和托管代码的混合进程 在 Windows Server 2003 上运行 当我从进程资源管理器中终止进程时 它会进入 100 cpu 的状态 并在消失之前保持这种状态一段时间 有时甚至 10 分钟 在此期间我无法 杀死
  • 如何在c#中创建多线程

    我需要监听机器中的所有串行端口 假设我的机器有 4 个串行端口 我必须创建 4 个线程并开始分别使用附加线程监听每个端口 我使用此代码来获取我的机器中的端口数量 private SerialPort comPort new SerialPo

随机推荐

  • 在 Swift 中如何检查类型是否为可选?

    在 Swift 中如何检查类型是否为可选 假设我有一个 PartialKeyPath 类型的变量 其中 struct Foo let bar String let baz String typealias Property
  • 更新到!!后抛出CA1062参数空值检查

    根据 CA1062 外部可见方法中需要进行 null 检查 如下所示 public static double GetLongitude this Location location if location is null throw ne
  • hibernate实体转json

    我使用 Hibernate 4 和 Spring 3 我有两个实体 图书实体 Entity Table name book public class Book implements Serializable public Book priv
  • 将对象从驱动程序传递到 MapReduce

    我创建了一个驱动程序 它读取配置文件 构建对象列表 基于配置 并将该列表传递给 MapReduce MapReduce 有一个静态属性 它保存对该对象列表的引用 它有效 但仅限于本地 一旦我在集群配置上运行作业 我就会收到各种错误 表明列表
  • 尝试将 laravel lighthouse-php 与 Roadrunner Server 结合使用时遇到间歇性错误

    走鹃 1 8 1 拉拉维尔 7 17 2 灯塔 4 15 0 使用 NGINX 时 我的 GraphQL API 架构没有任何问题 然而 当我切换到 Roadrunner 时 我突然间歇性地收到如下错误 message Lighthouse
  • 如何快速估计两点(纬度、经度)之间的距离?

    我希望能够估计两个 纬度 经度 点之间的距离 我想要下冲 因为这将用于 A 图搜索 我希望它是fast 这些点相距最多 800 公里 的答案Python 中的半正弦公式 两个 GPS 点之间的方位和距离 提供可以回答您的问题的 Python
  • Cordova:JDK 1.8 或更高版本的要求检查失败

    我在 Windows 7 操作系统中使用 Cordova 6 4 0 但是当我尝试构建 android 版本时出现此错误 Java Home 变量已正确设置为 JDK 路径 但我不知道为什么会出现此问题 请问有什么建议吗 在 Linux D
  • 替换外来字符

    在将值存储到数据库之前 我需要能够用英语等效字符替换一些常见的外语字符 例如 用 来代替ae and with n 我使用 preg replace 吗 Thanks 对于单个重音字符 str strtr str AAAAAACEEEEII
  • 在android中将房间数据库导出到csv文件

    有很多教程可用于将 SQLite 数据库导出到 csv 文件 但没有足够的内容用于从房间数据库导出 使用sqlite导出参考在android中将SQLite数据库导出到csv文件手动解析行的每一列以查找空间 以下是我的代码 Dao inte
  • 如何正确编辑阿拉伯字符串?

  • 浏览器控制台中的变量 [[FunctionLocation]]、[[Scopes]]: 是什么

    使用 jQuery Ajax 时 在浏览器控制台中 我可以看到 xhr 对象有两个 props 字段 采用一些奇怪的符号 双方括号 在这种情况下不认为它意味着数组 首先 它们到底是什么 其次 我可以从 JavaScript 代码访问这些值吗
  • Pandas:np.where 在数据帧上具有多个条件

    大家好 我查遍了SO和谷歌 但找不到任何类似的东西 我有一个数据框 x 基本上由一行和 300 列组成 和另一个大小相同但数据不同的数据框 y 我想修改 x 如果它与 y 有不同的符号并且 x 本身不为 0 则它为 0 否则保持原样 所以这
  • 自定义 RESTful 资源的 url_for(复合键;不仅仅是 id)

    给定以下资源定义 map resources posts except gt show map post year month slug controller gt posts action gt show 我会做url for为我工作 使
  • 打印列表的所有可能的子集

    我有一个元素列表 1 2 3 我需要获取该列表的超集 幂集 不重复元素 所以基本上我需要创建一个列表列表 如下所示 1 2 3 1 2 1 3 2 3 1 2 3 实现此目的的最佳方法是什么 在这种情况下简单 gt 效率 列表不会很大 最好
  • CMake交叉编译生成无效的链接器选项

    我使用 CMake 使用特定的工具链 nios2 linux gnu g exe Sourcery CodeBench Lite 2013 05 43 4 7 3 在 Linux 和 Windows 中进行编译 从 CMake 生成到链接器
  • numpy 数据类型中的 |、> 和 <

    这可能是一个非常愚蠢的问题 但我尝试用谷歌搜索关键字 例如less and greater signs in data type of numpy并没有找到参考 In the doc of numpy x np array 1 0 2 3
  • .NET DropDownList SelectedIndexChange 事件在 IE 10 中未触发

    在 IE 10 中 当下拉列表所选项目发生更改时 不会发生任何情况 它不会回发 除下拉列表外 所有其他控件均有效 当我切换到 IE 10 兼容模式时 它似乎可以工作 斯科特 汉塞尔曼 Scott Hanselman 在他的博客上解释了这一点
  • 更改打印机默认纸张尺寸

    我在打印机上定义了几种自定义纸张尺寸 打印机设置为默认值 我需要能够选择其中一种格式作为默认格式 编程 C 解决方案是理想的 但命令行解决方案也可以 现在 我可以获得打印机上定义的纸张尺寸 名称 尺寸 列表 并且可以找出哪一个是默认的 为了
  • HTA 的;使用其他浏览器托管?

    如果微软使用 IE 作为 HTA 本地主机的方法 那么我可以使用任何其他浏览器吗 你不能 有一个类似的 Mozilla 项目名为XUL跑者 但 HTA 仅适用于 Internet Explorer 这两种技术不兼容 为了澄清这一点 HTA可
  • Stream.Dispose 是否总是调用 Stream.Close (和 Stream.Flush)

    如果我有以下情况 StreamWriter MySW null try Stream MyStream new FileStream asdf txt MySW new StreamWriter MyStream MySW Write bl