一尘不染

LINQ Ring:大量集合的Any()vs Contains()

c#

给定大量的对象,以下各项之间是否存在性能差异?

集合包含

myCollection.Contains(myElement)

Enumerable.Any

myCollection.Any(currentElement => currentElement == myElement)

阅读 388

收藏
2020-05-19

共1个答案

一尘不染

Contains()是实例方法,其性能在很大程度上取决于集合本身。例如,Contains()a List是O(n),而Contains()a
HashSet是O(1)。

Any()是扩展方法,将简单地遍历集合,将委托应用于每个对象。因此,它的复杂度为O(n)。

Any()但是更灵活,因为您可以传递一个委托。Contains()只能接受一个对象。

2020-05-19