Реализация списка <T>.Удалить (элемент T, IComparer <T>сравнение) - PullRequest
0 голосов
/ 22 июня 2019

Мне кажется странным, что универсальный List<T> включает метод Remove для удаления элементов по значению, но не включает перегрузку это берет IComparer<T> вместе со значением и просто полагается на средство сравнения равенства по умолчанию, чтобы найти элемент в списке. Относительно недавно Я использовал List<T> для удержания клавиш SortedList<K,V> , чтобы сделать более поздний ограниченный , и понял, что при удалении элементов из обоих списков Я не мог использовать SortedList<K,V>.Comparer, чтобы обеспечить синхронизацию двух списков. Как я могу реализовать отсутствующую перегрузку как метод расширения?

public static bool Remove<T>(this List<T> source, T item, IComparer<T> comparer)
{
    // TODO
}
...