質問: true; } } public void Dispose() { Dispose(true); // GC.SuppressFinalize(this); } } ``` ### 補足情報(FW/ツールのバージョンなど) Win10 pro, VisualStudio 2015pro
回答: こんにちは。 詳しく解説するとめちゃくちゃ長くなってしまうので、だいたい99%の状況に適用できるルールを紹介します。 * IDisposableが実装されているオブジェクトを自クラスの「フィールドに格納することがある」なら、自クラスにIDisposableを「必ず」実装し、Disposeが呼ばれたらそのフィールドのDisposeを呼ぶ * それ以外の場合、COMを呼んだりしなければIDisposableを実装することは「ほぼない」 * 自クラスが何らかの「開始」と「終了」をペアで持つような性質がある場合、「開始」をコンストラクタで(またはInitializeとか)、そして「終了」をDisposeで行うようにIDisposableを実装する このルールに則ってコーディングしてみると、IDisposableがどういうものなのか自然と分かってくると思います。 (あ、MSDNとかにデカデカと載ってる「Disposeパターン」ってのは、余程のローレベルプログラミングをしない限り書くことはないです。ぼくはまだ一度も書いたことない)