У нас есть класс библиотеки C#, который портится из списка, но медленный, потому что List.Contains работает медленно. Мы не можем изменить класс, чтобы наследовать от чего-то другого, такого как Dictionary или HashSet, потому что много клиентского кода зависит от этого класса, и он слишком вовлечен в изменение интерфейса. Есть ли простой способ ускорить этот метод без его изменения? Некоторые из списков очень большие, поэтому нам не нужны две копии в памяти. Мы также не хотим переопределять все методы List.Ускорение list.contains
public class UniqueList<T> : List<T>, IList<T>
{
public new void Add(T item)
{
if (!this.Contains(item) && item != null)
{
base.Add(item);
}
}
Ваш класс очень проблематичен. Как только кто-то не использует его с типом времени компиляции UniqueList, но с «List» или 'IList ' ваш 'Add' метод не будет использоваться из-за' new' –
Вы правы, и это может не были преднамеренными (я не писал), но так как никто не жаловался на то, что не может быть кто-то, кто хочет это сделать. –