重複の可能性:
IDisposable インターフェイスの適切な使用
本、インターネット、およびスタックオーバーフローから質問に対する実際の回答を見つけようとしましたが、これまでのところ何も役に立たなかったので、意味をなすのに十分正確に問題を表現できることを願っています.
一般に、メモリを解放する方法の同じ基本的な使用法を常に見つけました。次のように、私はコード自体を理解しています:
public class MyClass : IDisposable
{
bool disposed = false;
public void Dispose()
{
if (!disposed)
{
Dispose(true);
GC.SuppressFinalize(this);
disposed = true;
}
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
//free managed ressources
}
// free other ressources
}
~MyClass()
{
Dispose(false);
}
}
メソッドが機能する方法は完全に理にかなっています。しかし今、私の質問: なぜ基本クラス IDisposable が必要なのですか? このコード サンプルでは、 というメソッドを定義しますDispose()
。どこでもそのメソッドは IDisposable の一部であると読んでいますが、そのメソッドを内部で定義したばかりでMyClass
あり、基本クラス IDisposable を実装しない場合、またはこの仮定が間違っている場合でも、このコードは機能しますか?
私は C# を初めて使用するわけではありませんが、まだ学ぶべきことがたくさんあるので、誰かが私を正しい方向に導いてくれることを願っています。同じ質問の別の投稿を確認しましたが、見つかりませんでした。もしそれが存在し、私の質問に答えている場合は、そこに誘導してください。この投稿を削除します。