Re: BinarySearch со значением поля на входе
От: karbofos42 Россия  
Дата: 22.03.25 07:24
Оценка: 6 (1) -1 :)
Здравствуйте, Barbar1an, Вы писали:

B>но нам нужно все равно передать элемент для поиска, а его нет, есть только значения поля, и создать его нельзя потому E это шаблонный параметр который нельзя создать


При желании можно немного костылей нагородить. Для поиска передавать null (default(T)), а действительно искомое значение прописать в своей реализации IComparer.
Что-то типа:
public class BinaryComparer<T> : IComparer<T>
{
    Func<T, int> _comparer;

    public BinaryComparer(Func<T, int> comparer)
    {
        _comparer = comparer;
    }

    public int Compare(T x, T y)
    {
        return _comparer(x);
    }
}
...
var i = Entries.BinarySearch(null, new BinaryComparer<E>(x => x.A.CompareTo(10))); // Поиск элемента, у которого A == 10

Ну, либо свой бинарный поиск написать, он достаточно простой.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.