回答
一般在.net中,你需要實現IDisposable,如果你的類中創建任何IDisposable的對象並將其存儲爲實例變量/屬性。這條規則可能有例外。但是,IDisposable的意義在於清理垃圾收集器本身無法獲得的系統資源。
所以,如果你的班級正在創建IDisposables,它也需要確保它們被清理。通過using(someDisposableChildObject){}
直接或通過在Dispose方法中實現IDisposable和調用someDisposableChildObject.Dispose()
。
我對COM有很少的經驗,但從我知道的小事來看,不是所有的COM對象都繼承了IDisposable?如果是這樣,那麼從你的答案,它的功能就像一個C++析構函數,因此應該是一個很好的習慣來覆蓋它,除非你有充分的理由不去? – RobbieE
在正常的類中,您不能「覆蓋」處置,因爲它不是對象的一部分。在這些情況下,它意味着實施IDisposable,這基本上要求消費者做額外的工作(通過處置)。 在控制器的情況下,覆蓋不調用base.Dispose可能會很糟糕。除非你有一次性物品,否則你想要處理它是浪費時間去做。但只要你仍然稱之爲基地,它就不會受到傷害。 –
- 1. 什麼時候使用__proto__和什麼時候使用原型
- 2. 什麼時候應該使用AWS,什麼時候不使用
- 3. intn_t什麼時候使用它,什麼時候不使用
- 4. 什麼時候使用Ruby和什麼時候使用PHP
- 5. 什麼時候使用ByteString,什麼時候不使用?
- 6. 什麼時候應該使用async/await,什麼時候不用?
- 7. 什麼時候使用sIFR?
- 8. 什麼時候使用MessageDigest.reset()
- 9. 什麼時候使用VK_IMAGE_LAYOUT_GENERAL
- 10. 什麼時候使用SVDRecommender
- 11. JOINS什麼時候使用?
- 12. 什麼時候使用SpringApplicationBuilder?
- 13. 什麼時候使用StringIO?
- 14. Railties - 什麼時候使用
- 15. 什麼時候使用uncaught_exception?
- 16. 什麼時候使用ANTLR
- 17. 什麼時候使用vtable?
- 18. SQL Server CASE什麼時候不使用CASE什麼時候
- 19. ZF2什麼時候使用getServiceLocator()什麼時候不到
- 20. 什麼時候使用GWT,什麼時候不需要
- 21. 什麼時候和Swing一起使用AWT,什麼時候不使用?
- 22. 在TypeScript中,什麼時候使用「let」,什麼時候使用「const」?
- 23. 什麼時候應該使用sed,什麼時候應該使用awk
- 24. 什麼時候使用for-each和什麼時候在xslt中使用apply-templates?
- 25. 不知道什麼時候使用抽象屬性,什麼時候不使用
- 26. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 27. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 28. KineticJS:我什麼時候使用toImage()以及什麼時候使用緩存()
- 29. 什麼時候使用適配器和什麼時候使用inflater
- 30. 什麼時候使用信號和插槽,什麼時候不使用
通常你不需要擔心你的控制器。 IoC容器將管理您的控制器併爲您注入資源。 –
您會在SO上找到關於Dispose模式的大量問題(和答案)。長話短說:它是爲了確定性地回饋使用的資源(最簡單的例子:關閉一個打開的文件)。 – Oliver