膨大なオブジェクトのコレクションがある場合、次のパフォーマンスの違いはありますか?
myCollection.Contains(myElement)
myCollection.Any(currentElement => currentElement == myElement)
ベストアンサー1
Contains()
はインスタンス メソッドであり、そのパフォーマンスはコレクション自体に大きく依存します。たとえば、Contains()
a ではList
O(n) ですが、Contains()
a ではHashSet
O(1) です。
Any()
は拡張メソッドであり、コレクション全体を単純に処理して、すべてのオブジェクトにデリゲートを適用します。したがって、計算量は O(n) になります。
Any()
ただし、デリゲートを渡すことができるため、より柔軟です。Contains()
オブジェクトのみを受け入れることができます。