Делать поиск диапазона в C # - как реализовать

Я пытаюсь понять, как реализовать код, найденный в потоке Джоном Скитом:Делаете поиск диапазона в C #?

Может кто-нибудь предоставить пример установки, используя что-то вроде: 1-10000, 10001-40000, 40000+

где первая группа возвращает значение 1, 2, 3 соответственно?

Я не совсем понимаю, как это делается в этом коде. ТХ.

public interface IRangeComparer<TRange, TValue>
{
    /// <summary>
    /// Returns 0 if value is in the specified range;
    /// less than 0 if value is above the range;
    /// greater than 0 if value is below the range.
    /// </summary>
    int Compare(TRange range, TValue value);
}


/// <summary>
/// See contract for Array.BinarySearch
/// </summary>
public static int BinarySearch<TRange, TValue>(IList<TRange> ranges,
                                               TValue value,
                                               IRangeComparer<TRange, TValue> comparer)
{
    int min = 0;
    int max = ranges.Count-1;

    while (min <= max)
    {
        int mid = (min + max) / 2;
        int comparison = comparer.Compare(ranges[mid], value);
        if (comparison == 0)
        {
            return mid;
        }
        if (comparison < 0)
        {
            min = mid+1;
        }
        else if (comparison > 0)
        {
            max = mid-1;
        }
    }
    return ~min;
}

Ответы на вопрос(1)

Ваш ответ на вопрос