我想知道如果我执行 return
或 throw
操作,在 using
语句中创建的对象是否会被释放。示例如下。
using(SomeClass thing = new SomeClass())
{
...
if(condition)
return;
...
}
上面的内容会让人感到困惑还是GC值得信任?
最佳答案
是的,会的。 using
语句将导致创建一个 finally
block 。即使在相关的 try
block 中抛出异常,或者如果该 try 中有 return
语句,finally
block 的代码也会运行堵塞。
只有少数异常会导致finally
block 的代码不被执行,它们都列在here 中。 ,但我的猜测是,在您的情况下,您将能够承受这些后果。
关于c# - `using` 是否处理其中声明的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410806/