【发布时间】:2012-06-21 16:56:25
【问题描述】:
考虑到List 的边界已知,.Last() 是否枚举集合?
我问这个是因为documentation 说它是由Enumerable 定义的(在这种情况下,它将需要枚举集合)
如果它确实枚举了集合,那么我可以简单地按索引访问最后一个元素(正如我们知道List<T> 的.Count),但必须这样做似乎很愚蠢。 ...
【问题讨论】:
-
如果你知道你有一个
List<T>,那么只需快速访问最后一个元素,而不依赖Last()中可能的未记录优化。 (碰巧Last()确实检查接收器是否实现IList<T>,并优化这种情况。) -
@dlev 是的,正如我所提到的,我知道我可以做到这一点......我特别询问
.Last的实施 -
我很确定实现会检查
List<T>并尽可能按索引访问最后一个元素。 -
许多 LINQ 扩展检查索引类型作为优化。如果 Last() 也这样做,我不会感到惊讶。当然,这将是实现定义的,不应依赖。
-
对,但我的意思是你不应该依赖行为,因为它没有被记录为这样(即使它确实 执行优化。)
标签: c# .net list collections linq-to-objects