【问题标题】:Internal System.Linq.Set<T> vs public System.Collections.Generic.HashSet<T>内部 System.Linq.Set<T> 与公共 System.Collections.Generic.HashSet<T>
【发布时间】:2013-06-12 08:27:49
【问题描述】:

查看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?如果它在任何方面都更好,为什么不向公众公开呢?

【问题讨论】:

    标签: c# linq hashset


    【解决方案1】:

    这个Set&lt;T&gt; 的实现比HashSet&lt;T&gt; 简单得多,因为它只需要添加和删除元素并检查LINQ 内部进程是否存在。它不实现任何接口或暴露迭代器等。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多