Пользовательский equality comparer в C#
Интерфейс IEqualityComparer<T> задаёт, когда два объекта считаются одинаковыми
и какой хеш у каждого. Его передают в конструктор HashSet<T> и
Dictionary<TKey, TValue>.
Готовый StringComparer.OrdinalIgnoreCase сравнивает строки без учёта регистра
и согласует хеш-коды для такого же правила.
Добавим ключ и проверим поиск другим регистром. Значение true
показывает, что comparer применился и при добавлении, и при поиске:
StringComparer ignoreCase = StringComparer.OrdinalIgnoreCase;
HashSet<string> set = new HashSet<string>(ignoreCase);
set.Add("Key");
Console.WriteLine(set.Contains("key"));
Добавьте название "Bridge" в набор без учёта регистра и проверьте, есть ли в нём "bridge". Результат выведите в консоль.