Проверьте этот фрагмент кода из класса Linq.Enumerable
:
static IEnumerable<TSource> DistinctIterator<TSource>(IEnumerable<TSource> source, IEqualityComparer<TSource> comparer) {
Set<TSource> set = new Set<TSource>(comparer);
foreach (TSource element in source)
if (set.Add(element)) yield return element;
}
Почему ребята из Microsoft решили использовать эту внутреннюю реализацию Set
, а не регулярную HashSet
? Если это лучше, почему бы не разоблачить его для публики?