Почему существует метод Distinct(), доступный на HashSet, когда они не могут содержать дубликаты?Почему у C# HashSets есть метод Distinct()
6
A
ответ
13
Метод Distinct
отсутствует на HashSet<>
, но IEnumerable<>
, который реализуется HashSet<>
.
Методы расширения не могут быть «опущены» из определенных типов. После добавления к типу, весь этот тип и любой производный получит метод расширения.
Просто, чтобы продемонстрировать, если вы расширили object
, вы поместили бы все, если бы добавили соответствующее пространство имен. Так что не добавляет:
namespace System
{
public static class ObjectExtensions
{
public static void Garbage(this object foo)
{
}
}
}
Для уточнения 'Distinct' является метод расширения на' 'IEnumerable, что' 'HashSet происходит реализовать. –
bluevector
@jonnyGold Да, я понял, я только что редактировал свой ответ до вашего комментария. Спасибо за разъяснение в любом случае. –
Чтобы быть более точным, 'Distinct' - это метод расширения, расширяющий' IEnumerable <> 'и находящийся в статическом классе' System.Linq.Enumerable'. –