using System.Collections.Generic;
public static IEnumerable<T> Numbers<T>(T a, T b, Func<T, T> increment)
where T : struct, IComparable
var i = a; while (i.CompareTo(b) < 0)
yield return i; i = increment(i);
public static IEnumerable<T> Numbers<T>(T a, T b)
where T : struct, IComparable
dynamic i = a; while (i.CompareTo(b) < 0)
public static void Main()
Numbers<double>(1, 5).Dump();
Numbers<int>(1, 5, x => {x++; return x;}).Dump();
Numbers<float>((float)1.5, (float)7.5, x => { x += (float)0.75; return x; }).Dump();