建議利用using
聲明是一個很好的建議;但它不是你唯一的選擇。它往往被開發人員傾向於其語法「乾淨」的外觀和易用性。
主要的事情(和什麼using
總是確保你)是確保你打電話FileStream.Close
無論如何。如果您遇到例外情況,則可能會漏掉此代碼。因此,至少要撥打Close
撥打finally
區塊。
個人而言,如果我寫的任何錯誤處理我自己,我更喜歡try
/catch
/finally
到try
/using
/catch
。另一種場景我太喜歡使用finally
是我正在與多個IDisposable
對象,我想避免深層嵌套。請看下面的代碼:
try {
using (DisposableObject obj1 = GetDisposableObject()) {
// do something
using (DisposableObject obj2 = GetAnotherDisposableObject()) {
// do something else
using (DisposableObject obj3 = GetYetAnotherDisposableObject()) {
// do even more things
// this code is now quite nested
}
}
}
} catch (SomeException ex) {
// some error-handling magic
}
現在比較,這樣的:
DisposableObject obj1 = null;
DisposableObject obj2 = null;
DisposableObject obj3 = null;
try {
obj1 = GetDisposableObject();
// do something
obj2 = GetAnotherDisposableObject();
// do something else
obj3 = GetYetAnotherDisposableObject();
// do even more things
// this code doesn't have to be nested
} catch (SomeException ex) {
// some error-handling magic
} finally {
if (obj3 != null) obj3.Dispose();
if (obj2 != null) obj2.Dispose();
if (obj1 != null) obj1.Dispose();
}
就個人而言,我覺得後者更加具有可讀性。
顯然,這是個人偏好。上述兩個代碼示例達到相同的結果。
什麼是正在使用的文件? – SLaks 2010-02-15 20:04:04