我有一個當前有終結器的類,但尚未實現IDisposable。 Microsoft聲明:「將IDisposable接口添加到現有類是一種破壞版本的更改,因爲它會更改類的語義」。 該類應該「固定」並實現IDisposable?在現有的帶終結器的類上實現IDisposable
0
A
回答
0
如果您控制使用此類的所有代碼,那麼您可以執行此操作,並更新代碼以調用Dispose。否則,這不是一個好主意,因爲現有的外部代碼不會調用Dispose()。
0
如果添加IDisposable,則需要添加代碼以在實例化類的所有代碼中調用dispose()方法。如果所有調用/實例化你的類的代碼都不是由你管理的,它可能並不容易,並導致未放置的對象。
0
這取決於,但基本上沒有。終結器只是一個被稱爲釋放內存的清理方法,沒有任何承諾暗示它將被消費代碼調用。 IDisposable告訴世界,即使出現錯誤,也必須爲類的實例調用dispose方法。如果這描述了你的代碼,它應該是第一位的,所以答案是肯定的。但是,如果是這種情況,您必須更改所有使用您的課程的代碼,以確保它們是一次性的。
相關問題
- 1. 在父類還實現IDisposable時在子類上實現IDisposable
- 2. 實現IDisposable的C#
- 3. 實現了IDisposable
- 4. CLR如何找到實現IDisposable的類?
- 5. 實現IDisposable無Dispose函數的類?
- 6. 在Singleton上實現IDisposable是否正確
- 7. 在API中實現IDisposable
- 8. 測試終結器和IDisposable
- 9. 爲什麼Stream類實現IDisposable?
- 10. 我必須在所有類上實現IDisposable,還是基類足夠?
- 11. 爲什麼System.Net.Mail.MailMessage實現IDisposable
- 12. Enumerable.Range爲什麼實現IDisposable?
- 13. System.Net.HttpListener只顯式實現IDisposable
- 14. ClientBase不實現IDisposable成員
- 15. 如何處理一個類沒有實現IDisposable的屬性?
- 16. 具有線程成員的類是否應實現IDisposable?
- 17. 如何查找所有實現IDisposable的類?
- 18. luajit ffi實現塊終結器
- 19. 如果此類沒有Dispose方法,該類如何實現IDisposable?
- 20. 在C++中的 「最終」 類實現
- 21. 如何在繼承自SocketAsyncEventArgs的類中實現IDisposable接口
- 22. IDbCommand是否在實現IDisposable的類中處理?
- 23. IDisposable - 正確的方法實現(c#)
- 24. 在File.Delete方法中實現IDisposable?
- 25. 在.net 1.1中的FileStream上如何實現IDisposable一個
- 26. 是否有可能在實現IDisposable的類的析構函數中調用GC?
- 27. 所有類應該實現IDisposable接口嗎?
- 28. 爲什麼我沒有看到IDisposable實現併發的任何實現?
- 29. 實現UITableViewDataSource的類始終爲空
- 30. 編譯時從Idisposable實現泛型類時的不同行爲?
爲什麼你需要使班IDisposable'?你有一些資源必須馬上清理乾淨嗎? – code4life 2013-04-05 12:46:41
在你的情況下,多少代碼會破壞?大量項目「技術上」打破不影響99%用戶的變更。您必須確定在變更後有多少東西會真正分解,以正確評估變更的風險/回報。 – ken 2013-04-05 12:46:44