私は C# で作業していますが、using
ブロックを使用して を実装するオブジェクトを宣言することについてはかなり怠慢IDisposable
でした。しかし、いつ滑っているかを簡単に知る方法はありません。Visual Studio はこれをまったく示していないようです (何か足りないのでしょうか?)。何かを宣言するたびにヘルプをチェックして、どのオブジェクトが使い捨てで、どのオブジェクトが使い捨てでないかについて百科事典的な記憶を徐々に構築することになっているのでしょうか? 不必要で、苦痛で、エラーが発生しやすいようです。
これをどのように処理しますか?
編集:
関連する質問のサイドバーを見て、とにかくオブジェクトのファイナライザーによって呼び出されることになっていることを明確にする別の質問を見つけました。Dispose()
したがって、自分で呼び出さなくても、最終的には発生するはずです。つまり、使用しなくてもメモリリークは発生しませんusing
(これは、私がずっと心配していたことだと思います)。唯一の注意点は、ガベージ コレクターは、オブジェクトが管理されていないものとして保持している余分なメモリの量を知らないため、オブジェクトを収集することによって解放されるメモリの量を正確に把握できないことです。これにより、ガベージ コレクターのパフォーマンスが通常よりも低下します。
要するに、私が逃したとしても、それは世界の終わりではありませんusing
. 何かが少なくとも警告を生成することを願っています。
(トピック外: 別の質問にリンクするための特別なマークダウンがないのはなぜですか?)
編集:
わかりました、わかりました、騒ぎ立てるのはやめてください。それは、コールするのが非常に重要な、すべてが発射された劇的なシマリスレベルです。Dispose()
今。それを考えると、なぜそんなに簡単に — 地獄、なぜそれが許されているのでしょう — 間違ったことをするのですか? あなたはそれを正しく行うために最善を尽くさなければなりません。他のすべてのようにそれを行うと、ハルマゲドンが発生します(明らかに)。カプセル化はここまでですよね?
[立ち去る、うんざり]