.NET/C# - 使用“using”处理对象陈述
假设我有一个像这样的方法:
public byte[] GetThoseBytes()
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
ms.WriteByte(1);
ms.WriteByte(2);
return ms.ToArray();
}
}
这仍然会处理“ms”对象吗?我有疑问,也许是因为在语句块完成之前返回了某些内容。
谢谢, 阿杰。
Suppose I have a method like so:
public byte[] GetThoseBytes()
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
ms.WriteByte(1);
ms.WriteByte(2);
return ms.ToArray();
}
}
Would this still dispose the 'ms' object? I'm having doubts, maybe because something is returned before the statement block is finished.
Thanks,
AJ.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的。
using (x = e) { s }
是{ x = e; 的糖衣尝试 { s } 最后 { x.Dispose(); } }
Yes.
using (x = e) { s }
is sugar for{ x = e; try { s } finally { x.Dispose(); } }
是的,使用会创建一个 try..finally 块,因此它会处理 ms (如果您将 ns 设置为 null,甚至会进行 null 检查)。
Yes, Using creates a try..finally block, so it disposes the ms (and even does a null check in case you set ns to null).
是的,Using 语句背后的整个想法是它会自动处理您正在“使用”的任何流/对象。干得好。
Yes, the whole idea behind the Using statement is that it automatically disposes of whatever stream/object you are "using". nicely done.