2010-11-13 81 views
1

我用來保證資源清理。這對於簡單的代碼塊來說很好。 如果我有一個方法需要傳遞裏面的變量,我還可以保證資源清理嗎?使用和方法參數傳遞

例如,

using (FileStream fs = -----) 
{ 
     SomeMethod(fs); 
} 
+0

簡短的回答是肯定的。 – 2010-11-13 08:47:37

回答

4

是。 using(){}是語法糖,它會擴大你的代碼是:

FileStream fs = -----; 
try { 
    SomeMethod(fs); 
} finally { 
    if (fs != null) 
     ((IDisposable)fs).Dispose(); 
} 

finally塊,保證執行是否引發異常與否。唯一不會執行的時間是嚴重的運行時間故障,例如堆棧溢出,內存不足異常或運行時本身崩潰。

0

fs的Dispose()方法將在使用的代碼塊結束時被調用。

0

是的,它會被丟棄。

請參閱MSDN上using Statement的示例 - 使用傳入的參數創建Font