Мне нужен какой-то специализированный словарь. Мой вариант использования: пользователь хочет указать диапазоны значений (диапазон может также быть одной точкой) и присваивать значение определенному диапазону. Затем мы хотим выполнить поиск, используя одно значение в качестве ключа. Если это одно значение происходит в одном из диапазонов, мы вернем значение, связанное с диапазоном.
Например:
// represents the keyed value
struct Interval
{
public int Min;
public int Max;
}
// some code elsewhere in the program
var dictionary = new Dictionary<Interval, double>();
dictionary.Add(new Interval { Min = 0, Max = 10 }, 9.0);
var result = dictionary[1];
if (result == 9.0) JumpForJoy();
Это, очевидно, просто код, иллюстрирующий то, что я ищу. Кто-нибудь знает об алгоритме для реализации такой вещи? Если бы они могли указать мне на это, пожалуйста?
Я уже пробовал реализовать пользовательский объект IEqualityComparer и перегружал Equals() и GetHashCode() на Interval, но пока ничего не понял. Возможно, я что-то делаю неправильно.