По сути, нет - эта подпись не предоставляет достаточно информации для определения «близости».
IComparer<T>
позволяет сравнивать только два значения, чтобы определить, является ли одно больше, меньше или равно другому,Нет понятия «расстояние».
С этой подписью вы можете вернуть:
- Значение, которое соответствует
target
- Значение, которое меньше
target
, но больше любого другого значения, которое меньше target
- Значение, которое больше
target
, но меньше, чем любое другое значение, которое больше target
Предполагается, что source
не содержит значений, равных друг другу.
Так, например, с учетом ввода {1, 6, 3, 7, 8, 10} и целииз 4, вы можете вернуть «3 и 6», но вы не можете сказать, что 3 ближе к цели, чем 6.
Обратите внимание, что значения могут быть сопоставимы, как это, без понятия "расстояние "вообще в IComparer<T>
или IComparable<T>
.Я не знаю ни о каком подобном интерфейсе, который имеет такое понятие.Например, вы можете сортировать строки по порядку, но будет ли расстояние между «лисой» и «вомбатом»?Вы могли бы потенциально построить некоторое представление о расстоянии, но может быть несколько конкурирующих, и я подозреваю, что вы столкнетесь с проблемами точности, так как используемые строки становятся все длиннее и длиннее.