public RangeEnumerator([NotNull] IEnumerable <T> enumerable) { bool assigned = false; if (enumerable is IList <T> sourceList) { if (sourceList.Count > 0) { Minimum = sourceList[0]; Maximum = sourceList[sourceList.Count - 1]; assigned = true; } } else { using (IEnumerator <T> enumerator = enumerable.GetEnumerator()) { if (enumerator.MoveNext()) { Minimum = enumerator.Current; do { Maximum = enumerator.Current; }while (enumerator.MoveNext()); assigned = true; } } } if (!assigned) { Minimum = Maximum = default(T); IsIterable = false; } else { IsIterable = Minimum.IsLessThanOrEqual(Maximum); } }
public RangeLister(T minimum, T maximum) { Minimum = minimum; Maximum = maximum; IsIterable = Minimum.IsLessThanOrEqual(Maximum); }