Ошибка "Cannot apply operator '!=' to operands of type 'TKey' and 'TKey'" говорит о том, что компилятор C# не может применить оператор "!=" к операндам типа 'TKey' и 'TKey'. Это обычно происходит, когда вы пытаетесь сравнить два обобщенных типа (generic types) в коде.
Такое сравнение не работает, потому что для обобщенных типов компилятор не может гарантировать, что для типа 'TKey' определен оператор "!=".
Чтобы решить эту проблему, можно использовать метод `EqualityComparer<TKey>.Default.Equals(x, y)` из .NET, который сравнивает два значения и обеспечивает корректное сравнение для большинства типов, включая ссылочные типы (reference types), значимые типы (value types), и даже null. Этот метод также будет работать оптимально по производительности, т.к. он не вызывает boxing для значимых типов.
Вот как можно его использовать:
![[Снимок экрана 2023-08-03 в 11.16.06.png]]
Здесь мы использовали оператор отрицания '!', чтобы инвертировать результат сравнения и получить логику, аналогичную оператору "!=".
Обратите внимание, что это сравнение будет работать также, как оператор `==`, для ссылочных типов (проверка на то, что две ссылки указывают на один и тот же объект) и для значимых типов (проверка на равенство значений), а для типов, переопределяющих метод `Equals`, будет использоваться этот переопределенный метод. Если у вас есть особые требования к сравнению, вам следует рассмотреть возможность реализации своего собственного `IEqualityComparer<TKey>`.