基本ですが復習!!
class MyObject : IDisposable { public void Dispose() { Dispoase(true); // システムにfinalize呼ばなくてもいいよ〜って教える GC.SuppressFinalize(this); } protected virtual void Dispoase(bool disposing) { if (disposing) { Console.WriteLine("MyObject::Dispose マネージドなリソース開放"); } Console.WriteLine("MyObject::Dispose アンマネージドなリソース開放"); } ~MyObject() { Dispoase(false); } } class DrivedMyObject : MyObject { protected override void Dispoase(bool disposing) { if (disposing) { Console.WriteLine("DrivedMyObject::Dispose マネージドなリソース開放"); } Console.WriteLine("DrivedMyObject::Dispose アンマネージドなリソース開放"); base.Dispoase(disposing); } }