カスタムオブジェクトは、管理対象オブジェクトのみを含む場合でも破棄する必要がありますか?たとえば、いくつかの文字列とxmldocumentの型だけでなく、いくつかのListオブジェクトを含むカスタムクラスがあります。私は独自のDisposeメソッド(IDisposableから継承しないで)を作成し、それらが空であることを確認するためにそれらをクリアする必要がありますか?私がすれば、私もIDisposableから継承する必要がありますか?カスタムオブジェクトの廃棄
2
A
答えて
6
2
基準の管理対象オブジェクトインスタンスのいずれかがIDisposable
を実装している場合は、大まかにはIDisposable
を実装する必要があります。その後、あなたのDispose
実装にそれらを破棄することができます。
0
あなたのオブジェクトの寿命の末尾にあるnull
への参照を設定すると、ガーベッジコレクタの内容は変更されません。含まれているオブジェクトへの残りの参照のみがカスタムオブジェクトからのものである場合、ガベージコレクタはガベージコレクションの対象として扱います(生きたオブジェクトからの参照のみを参照するため)。他の場所からの参照がある場合、参照をクリーンアップしても、含まれているオブジェクトは収集されません。
もちろん、含まれているオブジェクトの一部に明示的な処理が必要な場合、つまりIDisposable
が実装されている場合、または末尾に閉じられる必要がある場合があります(IDisposable
を実装するには正しい方法ですが)。このようにしてIDisposable
を自分で実装し、含まれているオブジェクトをDispose
に処分する必要があります。
はもちろん、あなたが管理対象外オブジェクトを参照するとき特別な方法でIDisposable
を実装する必要があるが、これはanother storyです。
関連する問題
- 1. 廃棄インスタンス
- 2. IServiceProviderガベージコレクション/廃棄
- 3. ネットワーク廃棄ステータス
- 4. NUnit-オブジェクトの廃棄
- 5. xlsread [num]廃棄NaN
- 6. Xamarinフォーム廃棄Textview
- 7. F#の非同期廃棄
- 8. linq cacheとdataacontextの廃棄
- 9. SQL接続の廃棄
- 10. Structuremap DataContextオブジェクトの廃棄
- 11. (VB.net)のWeb廃棄問題
- 12. Webサービスプロキシの廃棄/クリーンアップ
- 13. NullPointerException:Timertaskキャンセルとオブジェクトの廃棄
- 14. StructureMapコンテナを廃棄する
- 15. 廃棄隠しフォルダは
- 16. SSRS - 廃棄通知設定
- 17. ブラシを廃棄する
- 18. カサンドラヌル細胞!=廃棄セル数
- 19. Java NIO UDPマルチキャスト - 廃棄パケット
- 20. StringBuilderオブジェクトを廃棄する
- 21. ImageListを廃棄する
- 22. はpurrr ::廃棄NAは
- 23. WCFの統合とオブジェクトの廃棄
- 24. 廃棄のためのガイドライン()とNinject
- 25. BeautifulSoup:フォームからの回答の廃棄
- 26. アンチサイト廃棄アルゴリズムのPHP Captchaでのワニスキャッシュ
- 27. シンプルなインジェクタASP.NETのシングルトンの廃棄
- 28. nodejsウェブの廃棄とコールバックの問題
- 29. ウェブサイトからのデータの廃棄
- 30. エンティティフレームワークのメモリ管理と廃棄?
「必要」は強い言葉です。大規模で扱いにくい場合や、重要な限られたリソースを占める場合は、これらのリソースを解放するためのIDisposableを実装することをお勧めします。 –
FAQの回答は、IDisposabeの全体的な使用方法と[IDisposableインターフェイスの適切な使用方法](http://stackoverflow.com/questions/538060/proper-use-of-the-idisposable-interface)を読む価値があります。 –
@JeremyHolovacs - "big"はここでは関係ありません。それはメモリに関するものではありません。約(管理された)リソースのみ –