【问题标题】:.NET/C# - Disposing an object with the 'using' statement.NET/C# - 使用“使用”语句处理对象
【发布时间】:2011-02-08 03:50:37
【问题描述】:

假设我有这样的方法:

public byte[] GetThoseBytes()
{
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        ms.WriteByte(1);
        ms.WriteByte(2);
        return ms.ToArray();
    }
}

这仍然会处理“ms”对象吗?我有疑问,可能是因为在语句块完成之前返回了一些东西。

谢谢, 阿杰。

【问题讨论】:

    标签: c# .net using-statement


    【解决方案1】:

    是的。 using (x = e) { s }{ x = e; try { s } finally { x.Dispose(); } } 的糖

    【讨论】:

    • 在 try..finally 的主体中的 return 将在 return 实际发生之前执行 finally 子句。
    • @dthorpe:嗯,是的。哎呀:)
    【解决方案2】:

    是的,Using creates a try..finally block,因此它会处理 ms(如果您将 ns 设置为 null,甚至还会进行 null 检查)。

    【讨论】:

    • (请忽略那篇文章中关于“CLR 将您的代码转换为 MSIL”的废话)
    【解决方案3】:

    是的,Using 语句背后的整个想法是它会自动处理您正在“使用”的任何流/对象。做得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-25
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多