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使用它的目的来说,它可能更快