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) 的相关文章

  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 引用的程序集自动由 Visual Studio 替换

    我有 2 个项目 一个可移植类库和一个常规单元测试项目 在可移植类库中 我使用 NuGet 来引用 Microsoft BCL 可移植包 它附带 2 个程序集 System Threading Tasks dll and System Ru
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 在 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