我知道c#中析構函數和終結符的含義和用法的區別。c#析構函數:處理「模式」和最佳實踐
但是,典型地,「不應該使用析構函數,而是使用MSDN中顯示的配置模式」回答「我應該......」。 Eric Lippert writes相當於strongly反對不必要地使用析構函數。
但是,該「模式」主張編寫一個析構函數,如~T() { Dispose(false); }
。陳述的原因是,這是一個「後備」,如果程序員忘記調用Dispose()
,則稱爲「後備」。當然,這忽略了終審員在其操作中不確定的事實,甚至可能永遠不會運行。
因此:
如果我使用的Dispose模式,是否也應該提供析構函數?順便說一句,我只處理管理資源(例如實體框架
DataContext
)。如果我確實提供了一個析構函數:如果我的類是從一個
IDisposable
派生的,它可能已經提供了一個析構函數,那麼我應該提供一個析構函數嗎?我認爲在這種情況下從來沒有寫過析構函數,但是文檔說它會自動調用基類的析構函數。
有幾十個類似的問題已經在SO。 –
你有沒有_unmanaged_資源開始? –
不,有關於這個或那個的問題。我在問爲什麼這些答案中有一個catch-22。 –