Не особо понимаю в чём преимущества использования данных интерфейсов и где в C# я могу их использовать. Так-же, как я понял - IEqualityComparer используют коллекции которые работают на базе хэш-таблиц, но не совсем понимаю зачем и какие выгоды это дает. Буду очень признателен за прояснение ситуации!
-
2Похожие вопросы How to use the IEqualityComparer, What problem does IStructuralEquatable and IStructuralComparable solve?tym32167– tym321672023-07-31 16:54:02 +00:00Commented 31 июл. 2023 в 16:54
-
Смотрел справку? IEqualityComparer IStructuralEquatableGrundy– Grundy ♦2023-07-31 18:27:10 +00:00Commented 31 июл. 2023 в 18:27
1 ответ
Мне кажется, что затруднение состоит в понимании назначения этих интерфейсов. В справке по ссылке IEqualityComparer ключевая фраза - это "This is consistent with the Contains, IndexOf, LastIndexOf, and Remove methods of the Dictionary<TKey,TValue> class and other generic collections." То есть смысл этих интерфейсов состоит в том, что они используются библиотечными классами, и поэтому ими нужно пользоваться для поддержки функциональности стандартных коллекций. А поддержка состоит в том, что есть возможность модифицировать поведение стандартного класса для объекта. Предоставляя объекту свою реализацию интерфейса IEqualityComparer, мы заставляем его сравнивать объекты так, как нужно нам, а не каким-то стандартным образом.
Никто не заставляет использовать эти интерфейсы в собственных классах, но их использование обеспечивает некоторую стандартизацию, что является полезным.