给定大量的对象,以下各项之间是否存在性能差异?
集合包含:
myCollection.Contains(myElement)
Enumerable.Any:
myCollection.Any(currentElement => currentElement == myElement)
Contains()是实例方法,其性能在很大程度上取决于集合本身。例如,Contains()a List是O(n),而Contains()a HashSet是O(1)。
Contains()
List
HashSet
Any()是扩展方法,将简单地遍历集合,将委托应用于每个对象。因此,它的复杂度为O(n)。
Any()
Any()但是更灵活,因为您可以传递一个委托。Contains()只能接受一个对象。