为什么不使用 Linq 优化 IReadOnlyList?

Erw*_*yer 6 c# linq collections complexity-theory interface

使用分析,我发现,当调用LINQ的扩展方法.Last()上的实现IReadOnlyListGetEnumerator()并且MoveNext()将被调用,直到集合的结尾,而不是使用与O(1)复杂性的指标。对于IList,没有这样的问题,因为扩展方法使用可用索引(参见此处的反射器代码)。

似乎 Linq 需要更新才能IReadOnlyListIList.

同时,实现 O(1) 复杂度的唯一方法是确保Last()在我的类中显式实现,以便不使用 Linq 扩展方法。