Мне нужен своего рода специализированный словарь. Мой пример использования таков: пользователь хочет указать диапазоны значений (диапазон также может быть отдельной точкой) и назначить значение определенному диапазону. Затем мы хотим выполнить поиск, используя одно значение в качестве ключа. Если это единственное значение встречается в одном из диапазонов, мы вернем значение, связанное с диапазоном.
Например:
// 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, но пока безрезультатно. Возможно, я что-то не так делаю.