【发布时间】:2009-09-04 08:08:58
【问题描述】:
我真的很喜欢Last(),并且会一直使用它来处理List<T>s。但由于它似乎是为IEnumerable<T> 定义的,我猜它首先枚举了枚举——这应该是 O(n) 而不是 O(1) 用于直接索引 List<T> 的最后一个元素。
标准 (Linq) 扩展方法是否意识到这一点?
C++ 中的 STL 通过迭代器等的完整“继承树”意识到这一点。
【问题讨论】:
-
迭代器的继承树是什么? C++ 一开始就没有扩展方法,所以
vector上的end()的实现方式与list的实现方式不同,任何想要使用迭代器的任何东西都必须是templateonIterator类型参数。
标签: c# .net linq extension-methods