Я пытаюсь понять разницу между двумя перегрузками Enumerable.Except
метода т.е.Разница между двумя перегрузками Enumerable.Except?
- За исключением (IEnumerable, IEnumerable)
- За исключением (IEnumerable, IEnumerable, IEqualityComparer)
Очевидно, что первый differnce заключается в том, что первая перегрузка использует сопоставитель равенства по умолчанию, а другой использует IEqualityComparer, но я могу добиться того же результата с помощью первого метода, реализовав интерфейс IEquatable (как упоминалось выше n документация MSDN метода Except
), то почему эта вторая перегрузка необходима?
Ну, только для случаев, когда вы не можете реализовать интерфейс IEquatable по какой-либо причине (например, если это не ваш класс), но все же хотите использовать пользовательский сопоставитель. –
Возможно, вы хотите использовать его на 2 'IEnuemrable', но вы не можете изменить 'SomeThirdPartyClass', тогда вы должны использовать вторую перегрузку. –
Иногда в зависимости от контекста существует несколько применимых правил равенства для объекта. IEquatable действительно обеспечивает один прецедент, поэтому в этих ситуациях вам нужно определить альтернативный компаратор и вторую перегрузку «Исключить». – code4life