【问题标题】:FileStream/StreamWriter in .NET Core 1.1 have no Close() method.NET Core 1.1 中的 FileStream/StreamWriter 没有 Close() 方法
【发布时间】:2017-04-03 02:48:22
【问题描述】:

我使用的是 .net core 1.1,之前在使用 .net 框架时,我通常在完成流操作后在 FileStream 或任何 Stream 上调用 Close(),但 .net 中的 FileStream 类核心 1.1 没有 Close 方法,我找到了 Dispose() 但不知道它是否等效。有人愿意让我知道正确关闭 .net 核心中的新 FileStream/StreamWriter 类的正确方法吗?

【问题讨论】:

  • 他们使用 .NETCore 纠正了整个框架中一些善意的设计决策,但效果不佳。就像 Stream 类有两个做同样事情的方法,Dispose 和 Close。纸上的声音设计,但令许多无法决定哪个“更好”的程序员感到困惑。
  • 正如 Hans 所说,您可以安全地使用 Dispose。请接受下面的答案以结束讨论。 Microsoft 在即将推出的 .NET Standard 2.0 中添加了 Close,它应该是 .NET Core 1.2 的一部分。

标签: c# stream .net-core dispose


【解决方案1】:

遇到这个问题,试图保持遗留代码完好无损,另一种选择是编写扩展方法。

public static class FileStreamExtension
{
    public static void Close(this FileStream reader)
    {
        reader.Dispose();
    }
}

【讨论】:

    【解决方案2】:

    使用using 或构建自己的Dispose Pattern

    using (StreamWriter sw = new StreamWriter(path)
    {
    
    } 
    

    【讨论】:

      【解决方案3】:

      实现IDisposable意味着你可以使用using语句,它会隐式调用Dispose()方法,从而关闭流。

      使用

      using (StreamWriter sw = new StreamWriter(path))
      {
          // your logic here
      } // here Dispose() is called implicitly and the stream is closed
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-30
        相关资源
        最近更新 更多