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