使用和方法参数传递

时间:2010-11-13 08:45:36

标签: c# .net

我用来保证资源清理。这对于简单的代码块来说很好。 如果我有一个方法需要在使用中传递变量,我还能保证资源清理吗?

例如,

using ( FileStream fs = -----)
{
      SomeMethod(fs);
}

3 个答案:

答案 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