6

.Last()プロファイラーを使用して、の実装で Linq 拡張メソッドをIReadOnlyList呼び出すと、O(1) の複雑さを持つインデックスを使用する代わりに、コレクションの最後まで呼び出されることがわかりましGetEnumerator()MoveNext()。の場合IList、拡張メソッドが使用可能なインデックスを使用するため、このような問題はありません (ここでリフレクター コードを参照)。

IReadOnlyListと同じくらい効率的にサポートするには、Linq を更新する必要があるようIListです。

当面の間、O(1) の複雑さを達成する唯一の方法Last()は、Linq 拡張メソッドが使用されないように、クラスに明示的に実装することです。

4

0 に答える 0