2013-04-05 63 views
0

我有一個當前有終結器的類,但尚未實現IDisposable。 Microsoft聲明:「將IDisposable接口添加到現有類是一種破壞版本的更改,因爲它會更改類的語義」。 該類應該「固定」並實現IDisposable?在現有的帶終結器的類上實現IDisposable

+0

爲什麼你需要使班IDisposable'?你有一些資源必須馬上清理乾淨嗎? – code4life 2013-04-05 12:46:41

+0

在你的情況下,多少代碼會破壞?大量項目「技術上」打破不影響99%用戶的變更。您必須確定在變更後有多少東西會真正分解,以正確評估變更的風險/回報。 – ken 2013-04-05 12:46:44

回答

0

如果您控制使用此類的所有代碼,那麼您可以執行此操作,並更新代碼以調用Dispose。否則,這不是一個好主意,因爲現有的外部代碼不會調用Dispose()。

0

如果添加IDisposable,則需要添加代碼以在實例化類的所有代碼中調用dispose()方法。如果所有調用/實例化你的類的代碼都不是由你管理的,它可能並不容易,並導致未放置的對象。

0

這取決於,但基本上沒有。終結器只是一個被稱爲釋放內存的清理方法,沒有任何承諾暗示它將被消費代碼調用。 IDisposable告訴世界,即使出現錯誤,也必須爲類的實例調用dispose方法。如果這描述了你的代碼,它應該是第一位的,所以答案是肯定的。但是,如果是這種情況,您必須更改所有使用您的課程的代碼,以確保它們是一次性的。

相關問題