gpt4 book ai didi

c# - Linq Contains() 是否检查 HashSet?

转载 作者:可可西里 更新时间:2023-11-01 08:20:52 25 4
gpt4 key购买 nike

有时 HashSet 通过属性作为 IEnumerable 公开。

众所周知,对于 enumerable.Count(),代码会检查它是否是一个集合,因此它不会枚举整个列表,而是走捷径。

对于使用 enumerable.Contains(x) 和 HashSets 的 Linq 版本是否有任何类似的检查?

最佳答案

来自reference source ,是的,虽然不是直接的:

public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value) {
ICollection<TSource> collection = source as ICollection<TSource>;
if (collection != null) return collection.Contains(value);
return Contains<TSource>(source, value, null);
}

如果源可枚举实现 ICollection<T> (和 HashSet<T> 一样),然后它使用集合的 Contains 方法。

关于c# - Linq Contains() 是否检查 HashSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25275071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com