Класс для работы с диапазонами чисел.

Точнее, написать надо было класс, который сможет проанализировать строку, где через запятую перечислены числовые значения, как одиночные, так и заданные отрезками: НачальноеЧислоКонечноеЧисло.
НачальноеЧисло должно быть меньше КонечноеЧисло.
Например: 1, 114, 21-30. И в дальнейшем показать, входит ли заданное значение в ранее установленный диапазон. Но заодно уж добавил и остальные функции. Строки такие, например, встречаются в окне печати Word (номера страниц)
Свойства класса:
bool AllowRepeats — В случае истинности значения AllowRepeats в диапазоне разрешены повторы значений.
2 конструктора — 1 создает класс с AllowRepeats==true, 2 позволяет задать AllowRepeats
Методы:
AddInDiapason (long Value) — Добавляет в диапазон значение Value
AddInDiapason(long StartValue, long EndValue) — Добавляет в диапазон значения, начиная со StartValue и заканчивая EndValue включительно
AddFromString(string DiapasonString) — добавляет в диапазон значения из вышеописанной строки, если не получилось возвращает false.
Clear() — Очищает значения диапазона
InDiapasonCount(long Value) — Возвращает, сколько раз встречается значение Value в диапазоне.
SortDiapason(SortOrder Order) — Сортирует диапазон по возрастанию или убыванию в зависимости от заданного параметра Order
SortOrder описана как:

public enum SortOrder
{
byAscending = 0,
byDescending = 1
}


ToArray() — Возвращает массив, содержащий значения диапазона.
InDiapason(long Value) — Проверяет, входит ли значение Value в диапазон (возвращает true или false)
GetIndexes(long Value) — Получает индексы элементов, равных значению Value
RemoveAt(int Index) — Удаляет элемент с индексом Index, генерирует исключение если индекс вне диапазона.
Remove(long Value) — Удаляет из диапазона все значения Value
Remove(long StartValue, long EndValue) — Удаляет из диапазона все значения, начиная со StartValue и заканчивая EndValue
RemoveInDiapason(string DiapasonString) — Удаляет из диапазона все значения, заданные строкой DiapasonString
GetValue(int Index) — Возвращает значение элемента с индексом Index
SetValue(int Index, long Value) — Устанавливает элементу с индексом Index значение Value
ReplaceValue(long OldValue, long NewValue) — Заменяет в диапазоне значения равные OldValue на значения NewValue
MaxValue(out long Value) — Возвращает максимальное значение элемента диапазона в переменную Value. Возвращает false в случае, если диапазон не заполнен значениями.
MinValue(out long Value) — Возвращает минимальное значение элемента диапазона в переменную Value. Возвращает false в случае, если диапазон не заполнен значениями.
Скачать исходник класса
Скачать демо

Это перепост заметки из моего блога на LJ.ROSSIA.ORG
Оригинал находится здесь: http://lj.rossia.org/users/hex_laden/192739.html
Прокомментировать заметку можно по ссылке выше.