using System.Collections.Generic;
public static void Main()
Console.WriteLine("===== Example 1 =====");
var i=Iterator.IterateOne(x => true);
Console.WriteLine("===== Example 1a =====");
i.MoveNext(); Console.WriteLine(i.Current);
i.MoveNext(); Console.WriteLine(i.Current);
Console.WriteLine("===== Example 1b =====");
int j; while (i.MoveNext() && (j=i.Current)<=100) { Console.WriteLine(j); }
Console.WriteLine("===== Example 2 =====");
var k=Iterator.IterateAll(x => x<100);
Console.WriteLine("===== Example 2a =====");
foreach(var x in k){ Console.WriteLine(x); }
Console.WriteLine("===== Example 2b =====");
var lst=Iterator.IterateAll(x=>true).Skip(100).Take(100).ToList();
foreach(var x in lst){ Console.WriteLine(x); }
public static IEnumerator<int> IterateOne(Func<int, bool> condition)
for(var i=1; condition(i); i++) { yield return i; }
public static IEnumerable<int> IterateAll(Func<int, bool> condition)
for(var i=1; condition(i); i++) { yield return i; }