書こうと思ってタイミングを逃していた話があったのを,『パイプラインパターンとリソース管理』を読んでいて思い出しました.ので,今度こそ書いてみます. 皆様,IEnumerator<T> の基底インターフェイスに IDisposable が紛れ込んでいるのをご存じでしょうか? public interface IEnumerator<T> : IDisposable, IEnumerator つまり,IEnumerator は IDisposable であるとは限りませんが,IEnumerator<T> は必ず IDisposable ということになります. Microsoft は何故このような設計にしたのでしょうか? Enumerator が IDisposable を実装しているという可能性について,C# の foreach ステートメントが想定しているのはまあ割と有名な話かと思います.
![IEnumerator<T> を実装していれば必ず IDisposable である理由 - NyaRuRuが地球にいたころ](https://cdn-ak-scissors.b.st-hatena.com/image/square/c72673d5ec30af8bdd12251b67bb3a1753d5c318/height=288;version=1;width=512/http%3A%2F%2Fwww.dwahan.net%2Fnyaruru%2Fhatena%2FEnumStates.png)