2012-08-01 54 views
2
using(YourType yourObject = new YourType()) 
{ 
    //Treatment on you object 
    //Exception occurs here 
} 

當我們寫這樣一來,垃圾收集器將自動銷燬的對象,但異常發生這裏面將垃圾收集仍處置對象或者我寫的東西吧,我知道這是一個跛腳q但m真的很困惑,thnx遇到異常時該對象是否會自動配置?

請解釋在不同的.NET框架的治療,使事情變得清晰。

+4

垃圾收集器值不一定自動處置對象。垃圾回收器與'using'語句無關。 'using'語句只是在finally塊中帶有Dispose調用的try/finally塊的語法糖。 – 2012-08-01 13:43:21

回答

1

MSDN Documentation

using語句確保被處置,即使當你調用對象的方法發生 異常調用。你可以通過將對象放在一個try塊中並且然後在finally塊中調用Dispose來實現相同的結果;然後你可以通過 來獲得相同的結果。實際上,這是編譯器如何翻譯 使用語句。

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

等於與:

var object = new Object(); 
try 
{ 
    object.DoSomething(); 
} 
finally 
{ 
    object.Dispose(); 
} 
+0

投入與事物平等 – 1Mayur 2012-08-02 10:00:49

相關問題