Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- IEnumerable<int> EnumerateIntegerRange(int from, int to)
- {
- for (int i = from; i <= to; i++)
- {
- yield return i;
- }
- }
- public static IEnumerable<int> To(this int start, int end)
- {
- return start.To(end, i => i + 1);
- }
- public static IEnumerable<int> To(this int start, int end, Func<int, int> next)
- {
- int current = start;
- while (current < end)
- {
- yield return current;
- current = next(current);
- }
- }
- 1.To(100)
- class Range<T> where T: IComparable<T>
- {
- public T From { get; set; }
- public T To { get; set; }
- public Range(T from, T to) { this.From = from; this.To = to; }
- public IEnumerable<T> Enumerate(Func<T, T> next)
- {
- for (T t = this.From; t.CompareTo(this.To) < 0; t = next(t))
- {
- yield return t;
- }
- }
- static void Example()
- {
- new Range<int> (0, 100).Enumerate(i => i+1)
- }
- }
- class EnumerableRange<T> : Range<T>, IEnumerable<T>
- where T : IComparable<T>
- {
- readonly Func<T, T> _next;
- public EnumerableRange(T from, T to, Func<T, T> next)
- : base(from, to)
- {
- this._next = next;
- }
- public IEnumerator<T> GetEnumerator()
- {
- return Enumerate(this._next).GetEnumerator();
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- return this.GetEnumerator();
- }
- }
Add Comment
Please, Sign In to add comment