Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 内部系统。Linq.Set<;T>;vs public System.Collections.Generic.HashSet<;T>;_C#_Linq_Hashset - Fatal编程技术网

C# 内部系统。Linq.Set<;T>;vs public System.Collections.Generic.HashSet<;T>;

C# 内部系统。Linq.Set<;T>;vs public System.Collections.Generic.HashSet<;T>;,c#,linq,hashset,C#,Linq,Hashset,请从Linq.Enumerableclass查看这段代码: static IEnumerable<TSource> DistinctIterator<TSource>(IEnumerable<TSource> source, IEqualityComparer<TSource> comparer) { Set<TSource> set = new Set<TSource>(comparer);

请从
Linq.Enumerable
class查看这段代码:

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; 
    }
静态IEnumerable区分计算器(IEnumerable源、IEqualityComparer比较器){
集合=新集合(比较器);
foreach(源中的TSource元素)
if(set.Add(element))收益返回元素;
}

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

这个
集的实现要比
哈希集
简单得多,因为它只需要添加和删除元素,并检查是否存在LINQ内部进程。它不实现任何接口或公开迭代器等

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