using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; internal class Program { private static void Main(string[] args) { var n = new InfiniteCollection("asdf"); foreach (var value in n.Take(5)) { Console.WriteLine(value); } } } class InfiniteCollection : IEnumerable { private T _value; public InfiniteCollection(T value) { _value = value; } public IEnumerator GetEnumerator() { return new InfiniteEnumerator(_value); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } private class InfiniteEnumerator:IEnumerator { public InfiniteEnumerator(T value) { Current = value; } public void Dispose() { return; } public bool MoveNext() { return true; } public void Reset() { return; } public T Current { get; } object IEnumerator.Current { get { return Current; } } } }