この質問に対する答えが見つかりませんでした。
好奇心から、以前のバージョンでは実装されていなかったXmlNodeList クラスが .NET 4.5 で IDisposable を実装するのはなぜですか?
この質問に対する答えが見つかりませんでした。
好奇心から、以前のバージョンでは実装されていなかったXmlNodeList クラスが .NET 4.5 で IDisposable を実装するのはなぜですか?
IEnumerator<T>
実装するのと同じ理由である可能性が高いですが、以前のバージョンは、実装IDisposable
がIEnumerator
クリーンアップを必要とする可能性がある状況を作成者が考える前に作成されましたが、そのような実装を返すファクトリはそのような必要性を知らない可能性があります。たとえば、クラスがファイル名を受け入れ、XmlNodeList
そのファイルから「ライブ」を提供する場合があります。のIDisposable.Dispose
メソッドはXmlList
、基になるファイルを閉じます。インターフェイスまたは抽象クラスのユーザーのかなりの部分が次のようなコードを使用する必要がある場合:
IDisposable asDispos = thing as IDisposable;
if (asDispos != null)
asDispos.Dispose();
そして、そうでないものの多くがそうすべきであるなら、それはおそらくそれ自体を実装するべきです。なぜなら、実装するかもしれないし、しないかもしれないクラスをキャストしようとするよりも、実装することが知られているクラスをIDisposable
無条件に呼び出す方が速いからです。IDisposable.Dispose
IDisposable
IDisposable.Dispose