19

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; 
    }

为什么微软的人决定使用这个内部实现Set而不是常规的HashSet? 如果它在任何方面都更好,为什么不向公众公开呢?

4

1 回答 1

12

它的实现Set<T>HashSet<T>它只需要添加和删除元素并检查是否存在 LINQ 内部进程要简单得多。它不实现任何接口或公开迭代器等。

因此,对于 LINQ 使用它的目的,它可能更快。

于 2013-06-12T08:39:29.740 回答