Ошибка "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>`.