内部System.Linq.Set <T> vs public System.Collections.Generic.HashSet <T>

HuB*_*eZa 17 c# linq hashset

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; 
    }
Run Code Online (Sandbox Code Playgroud)

为什么微软的人决定使用这种内部实现Set而不是常规HashSet?如果它以任何方式更好,为什么不将它暴露给公众?

okr*_*now 10

这样做的实现Set<T>要简单得多HashSet<T>,因为它只需要添加和删除元素并检查LINQ内部进程是否存在.它没有实现任何接口或暴露迭代器等.

所以LINQ使用它的目的可能更快.