Комментарии 3
Буквально мой случай. В далёком 2011 году (это ещё был .NET Framework 3.5) заметил в коде коллеги, что один класс, используемый как ключ в словаре, реализует простой IEquatable. Заменив его на IEquatable<T>, удалось ускорить соответствующую фичу в пару раз.
Пользуйтесь ReSharper или другими анализаторами.
https://www.jetbrains.com/help/inspectopedia/StructLacksIEquatable.Global.html
Да, решарпер это ловит. У майкрософта тоже есть правило под этот случай — CA1066 (Implement IEquatable when overriding Equals), но по умолчанию оно выключено: в доке прямо "Enabled by default in .NET 10 — No". Так что штатно, без решарпера или включения анализаторов, проблема остаётся незамеченной. https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1066

Бенчмаркая ключи Dictionary: забыл IEquatable — получил ×5 и 96 байт на каждый поиск