从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使用它的目的可能更快.