Chỉ cần tự hỏi tại sao Enumerable.Range
thực hiện IDisposable
.Tại sao Enumerable.Range triển khai IDisposable?
Tôi hiểu tại sao IEnumerator<T>
làm, nhưng IEnumerable<T>
không yêu cầu.
(tôi phát hiện ra điều này trong khi chơi với .Memoise() thực hiện của tôi, trong đó có tuyên bố như
if (enumerable is IDisposable)
((IDisposable)enumerable).Dispose();
trong phương pháp "nguồn xong" của nó mà tôi đã đặt một breakpoint trên ra khỏi tò mò, và được kích hoạt bởi một thử nghiệm.)
http://csharpindepth.com/articles/chapter6/iteratorblockimplementation.aspx –