13.07.2015 Views

C# in Depth

C# in Depth

C# in Depth

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

176 CHAPTER 6 Implement<strong>in</strong>g iterators the easy wayList<strong>in</strong>g 6.8 is the complete Range class, although we can’t quite use it yet as it’s stillabstract.List<strong>in</strong>g 6.8The abstract Range class allow<strong>in</strong>g flexible iteration over its valuesus<strong>in</strong>g System;us<strong>in</strong>g System.Collections;us<strong>in</strong>g System.Collections.Generic;public abstract class Range : IEnumerablewhere T : IComparable{Breadonly T start;readonly T end;public Range(T start, T end) CPrevents{“reversed”if (start.CompareTo(end) > 0) ranges{throw new ArgumentOutOfRangeException();}this.start = start;this.end = end;}public T Start{get { return start; }}public T End{get { return end; }}public bool Conta<strong>in</strong>s(T value){return value.CompareTo(start) >= 0 &&value.CompareTo(end)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!