我用来保证资源清理。这对于简单的代码块来说很好。 如果我有一个方法需要在使用中传递变量,我还能保证资源清理吗?
例如,
using ( FileStream fs = -----)
{
SomeMethod(fs);
}
答案 0 :(得分:4)
是。 using(){}
是语法糖,它会将您的代码扩展为:
FileStream fs = -----;
try {
SomeMethod(fs);
} finally {
if (fs != null)
((IDisposable)fs).Dispose();
}
无论是否抛出异常,都保证 finally
块执行。它们不会被执行的唯一时间是严重的运行时故障,例如堆栈溢出,内存不足异常或运行时本身崩溃。
答案 1 :(得分:0)
将在使用代码块结束时调用fs的Dispose()方法。
答案 2 :(得分:0)
是的,它会被处理掉。
请参阅MSDN上using Statement
上的示例 - 使用传入的参数创建Font
。