using System; public struct Range where T : IComparable { public T Start { get; private set; } public T End { get; private set; } public Range(T start, T end) { if(start.CompareTo(end) > 0) { T tmp = start; start = end; end = tmp; } Start = start; End = end; } public bool InRange(T value) { return value.CompareTo(Start) >= 0 && value.CompareTo(End) <= 0; } public override string ToString() { return string.Format("[{0}, {1}]", Start, End); } }