2
using(YourType yourObject = new YourType())
{
   //Treatment on you object 
   //Exception occurs here
}

当我们这样写时,垃圾收集器会自动处理对象,但是如果在这里面发生异常,垃圾收集器仍然会处理对象或者我必须为它写点东西,我知道这是一个蹩脚的 q 但我真的很困惑,thnx

请解释不同 .net 框架中的处理方式,以使事情一目了然。

4

2 回答 2

9

是的,using 块仍然会调用Dispose异常。请参阅MSDN 文档

using 语句可确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。

还有另一篇有用的文章避免使用语句出现问题

于 2012-08-01T13:42:22.150 回答
1

来自MSDN 文档

using 语句可确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。您可以通过将对象放在 try 块中,然后在 finally 块中调用 Dispose 来获得相同的结果;事实上,这就是编译器翻译 using 语句的方式。

using (var object = new Object())
{
    object.DoSomething();
}

等于:

var object = new Object();
try
{
     object.DoSomething();
}
finally
{
    object.Dispose();
}
于 2012-08-01T13:50:24.327 回答