.NET/C# - 使用'using'语句释放对象

8

假设我有这样一个方法:

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

这会不会仍然处置'ms'对象?我有疑虑,可能是因为在语句块完成之前返回了某些内容。
谢谢, AJ。
3个回答

11

是的,using (x = e) { s }{ x = e; try { s } finally { x.Dispose(); } } 的简化语法。


1
在 try..finally 的代码块中,return 语句在实际执行之前会先执行 finally 代码块中的内容。 - dthorpe
@dthorpe:嗯,是的。糟糕 :) - Simon Buchan

4

1
请忽略那篇文章中关于“CLR将您的代码转换为MSIL”的胡言乱语。 - Michael Stum

4

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接