Просто интересно, почему Enumerable.Range
реализует IDisposable
.Почему Enumerable.Range реализует IDisposable?
Я понимаю, почему IEnumerator<T>
., Но IEnumerable<T>
не требует.
(я обнаружил это во время игры с моей .Memoise() реализации, который имеет заявление как
if (enumerable is IDisposable)
((IDisposable)enumerable).Dispose();
в своем методе «источник закончил», что я поместил контрольную точку на из любопытства, и был вызван тестом.)
http://csharpindepth.com/articles/chapter6/iteratorblockimplementation.aspx –