質問: new MyDisposableObj()) { } ``` ストリームクラス(例:BinaryWriter)にはFinalizeメソッドがありますか?なぜ私はそれを使いたいのですか?
回答: 2つの操作はお互いにあまり関係がありません。 nullへの参照を設定すると、単にそのことが行われます。それは、まったく参照されたクラスに影響を与えません。 変数はもはや以前のオブジェクトを指していませんが、オブジェクト自体は変更されていません。 Dispose()を呼び出すと、オブジェクト自体のメソッド呼び出しです。 Disposeメソッドがどんな処理をしても、オブジェクトに対して実行されます。しかし、これはあなたのオブジェクトへの参照には影響しません。 重複の領域のみが*は、オブジェクトへの参照がなくなったときに*、それは最終的にガベージコレクションを取得するということです。また、クラスがIDisposableインターフェイスを実装している場合、ガベージコレクション前にオブジェクトに対してDispose()が呼び出されます。 しかし、あなたが参照をnullに設定した直後は、2つの理由でそれは起こりません。 最初に他の参照が存在する可能性があるため、ガベージコレクションはまだ行われません。また、最後の参照であってもガベージコレクションの準備が整っていても、ガベージコレクタが決定するまで何も起こりませんオブジェクトを削除します。 オブジェクトのDispose()を呼び出しても、オブジェクトは決して「強制終了」されません。これは一般的にオブジェクト*が*を安全に削除できるようにクリーンアップに使用されますが、最終的にはDisposeに関して魔法のようなものはありません。それは単なるクラスメソッドです。