我有一個當前有終結器的類,但尚未實現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. 實現IDisposable無Dispose函數的類?
- 5. 在API中實現IDisposable
- 6. 測試終結器和IDisposable
- 7. 爲什麼Stream類實現IDisposable?
- 8. 如何查找所有實現IDisposable的類?
- 9. luajit ffi實現塊終結器
- 10. 爲什麼System.Net.Mail.MailMessage實現IDisposable
- 11. System.Net.HttpListener只顯式實現IDisposable
- 12. 如果此類沒有Dispose方法,該類如何實現IDisposable?
- 13. 如何在繼承自SocketAsyncEventArgs的類中實現IDisposable接口
- 14. IDisposable - 正確的方法實現(c#)
- 15. 在.net 1.1中的FileStream上如何實現IDisposable一個
- 16. 在File.Delete方法中實現IDisposable?
- 17. 所有類應該實現IDisposable接口嗎?
- 18. 爲什麼我沒有看到IDisposable實現併發的任何實現?
- 19. 編譯時從Idisposable實現泛型類時的不同行爲?
- 20. IDisposable接口+終結模式
- 21. 爲什麼我需要我需要在子類中實現IDisposable()
- 22. 在結構上實現的C++模板
- 23. 我應該在IDisposable和Finalize上實現GC.SupressFinalize嗎?
- 24. 在基類上實現IExtensibleDataObject
- 25. 由於可讀性原因實現IDisposable
- 26. System.ServiceModel.ServiceHost實現IDisposable,但Dispose未公開
- 27. 什麼是C++中的標準延遲/終結器實現?
- 28. 爲什麼WCF RIA Services的DomainContext沒有實現IDisposable模式?
- 29. 設計只有一些實現需要的IDisposable
- 30. 在現有項目上實現Git
爲什麼你需要使班IDisposable'?你有一些資源必須馬上清理乾淨嗎? – code4life 2013-04-05 12:46:41
在你的情況下,多少代碼會破壞?大量項目「技術上」打破不影響99%用戶的變更。您必須確定在變更後有多少東西會真正分解,以正確評估變更的風險/回報。 – ken 2013-04-05 12:46:44