書こうと思ってタイミングを逃していた話があったのを,『パイプラインパターンとリソース管理』を読んでいて思い出しました.ので,今度こそ書いてみます. 皆様,IEnumerator<T> の基底インターフェイスに IDisposable が紛れ込んでいるのをご存じでしょうか? public interface IEnumerator<T> : IDisposable, IEnumerator つまり,IEnumerator は IDisposable であるとは限りませんが,IEnumerator<T> は必ず IDisposable ということになります. Microsoft は何故このような設計にしたのでしょうか? Enumerator が IDisposable を実装しているという可能性について,C# の foreach ステートメントが想定しているのはまあ割と有名な話かと思います.