LINQ.Last、.Skip等方法是否针对数组或列表进行了优化<;T>;?

LINQ.Last、.Skip等方法是否针对数组或列表进行了优化<;T>;?,linq,arrays,optimization,Linq,Arrays,Optimization,我想知道像.Last和.Skip这样的LINQ方法是否针对数组、List等进行了优化。例如,对于数组,我可以执行\u array[\u array.Length-1]来获取最后一个元素。\u array.Last()是否确实枚举了所有元素,然后返回最后一个元素,或者实际上是否内置了一些优化 如果不是的话,可能不得不放弃流畅的表现。Last()在没有谓词的情况下进行了优化。。。即使有一个谓词(通过从末尾回溯),也可以对其进行优化,但事实并非如此 我不认为Skip是优化的,尽管它也可能是优化的 基本

我想知道像
.Last
.Skip
这样的LINQ方法是否针对数组、
List
等进行了优化。例如,对于数组,我可以执行
\u array[\u array.Length-1]
来获取最后一个元素。
\u array.Last()
是否确实枚举了所有元素,然后返回最后一个元素,或者实际上是否内置了一些优化

如果不是的话,可能不得不放弃流畅的表现。

Last()
在没有谓词的情况下进行了优化。。。即使有一个谓词(通过从末尾回溯),也可以对其进行优化,但事实并非如此

我不认为
Skip
是优化的,尽管它也可能是优化的


基本上,大多数LINQ to对象都在可以优化的地方进行了优化(对于
ICollection
ICollection
,以及
IList
),但仍有更多的空间。

谢谢。您是否碰巧有说明优化的文档链接?我在找,但找不到。