IEnumerable.Last()被优化用于List吗?

29 浏览
0 Comments

IEnumerable.Last()被优化用于List吗?

我有一个名为L的List,包含着N个项目。\nL.Last()这个IEnumerable扩展方法会在线性时间内遍历所有N个项目吗?\n还是它在内部经过了优化,具有常数时间性能,就像L[L.Count - 1]一样?

0
0 Comments

IEnumerable.Last()方法在实现上对List进行了优化,通过返回list[count - 1]来实现。即使在这段代码中没有进行优化,JIT编译器也可以在有足够信息的情况下进行优化调用。

有趣的是,对于ICollection.Count(给定IList : ICollection),它并没有进行优化。这让我感到困惑。

ICollection没有索引器。

感谢对这段代码的解释,让我更加清楚了。

Reflector是一个收费应用程序,ILSpy和dotPeek是两个免费的替代品。

你也可以查看.Net参考源。

至于问题(Is IEnumerable.Last() optimized for List?)的答案,这是对参考源的链接:referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,3628defc5be1468a

0