2009-11-21 59 views
0

在我正在編寫的類中,我使用一個對象在我正在編寫的自定義類中設置其某些屬性。在構造函數中使用必須處理的對象

這是在構造函數中完成的,但類有一個Dispose()方法。

我從來沒有在一個Dispose()方法/實現IDisposable的構造函數中實際使用過一個對象。我應該用一個使用(...)聲明包裝它,還是應該實現一個析構函數/終結器?

我的想象力讓我問這個問題:這個類是第三方閉源API的一部分。我怎樣才能找出需要處理的東西?

感謝

回答

5

如果你的參考對象是本地的構造函數,然後只是把它包在using語句。

如果您對該對象的引用是一個類成員,那麼您的類也應該實現IDisposable,並使用它的Dispose()方法在該對象上調用Dispose()。

0

如果你不需要構造函數之外的對象,爲什麼不使用using語句? 如果有一個特殊的「毀滅」的代碼 - 使用是不夠的,你需要調用它的一些地方處置代碼...

1

只是爲了響應添加到您問題的另一部分:

  • 您通常只應實現一個終結器,您正在使用非託管資源,如果程序異常終止,可能需要清理這些資源。任何管理對象都會在某個時候由GC進行整理。不要依賴終結器來處理任何託管對象,因爲無法預測它何時執行。
  • 你不需要關心需要處理什麼。您應該相信類實現IDisposable的地方,它會通過該模式來處理所有事情。如果編碼嚴重,那麼你可能會遇到問題,但在這種情況下,我會樂觀的。

我總是選擇在使用塊中包裝IDisposables,因爲我認爲它比顯式調用Dispose()方法更簡潔。

相關問題