using(YourType yourObject = new YourType())
{
//Treatment on you object
//Exception occurs here
}
当我们写这样一来,垃圾收集器将自动销毁的对象,但异常发生这里面将垃圾收集仍处置对象或者我写的东西吧,我知道这是一个跛脚q但m真的很困惑,thnx遇到异常时该对象是否会自动配置?
请解释在不同的.NET框架的治疗,使事情变得清晰。
using(YourType yourObject = new YourType())
{
//Treatment on you object
//Exception occurs here
}
当我们写这样一来,垃圾收集器将自动销毁的对象,但异常发生这里面将垃圾收集仍处置对象或者我写的东西吧,我知道这是一个跛脚q但m真的很困惑,thnx遇到异常时该对象是否会自动配置?
请解释在不同的.NET框架的治疗,使事情变得清晰。
是的,使用块仍然会在异常时调用Dispose
。见MSDN documentation。
using语句确保被处置,即使当你调用对象的方法发生异常调用。
也是另一个有用的文章Avoiding Problems with the Using Statement。
using语句确保被处置,即使当你调用对象的方法发生 异常调用。你可以通过将对象放在一个try块中并且然后在finally块中调用Dispose来实现相同的结果;然后你可以通过 来获得相同的结果。实际上,这是编译器如何翻译 使用语句。
using (var object = new Object())
{
object.DoSomething();
}
等于与:
var object = new Object();
try
{
object.DoSomething();
}
finally
{
object.Dispose();
}
投入与事物平等 – 1Mayur 2012-08-02 10:00:49
垃圾收集器值不一定自动处置对象。垃圾回收器与'using'语句无关。 'using'语句只是在finally块中带有Dispose调用的try/finally块的语法糖。 – 2012-08-01 13:43:21