我不明白当前可以是null,最后一个可以是一个对象,而最后一个是LINQ函数.我以为最后使用GetEnumerator并持续进行直到当前== null并返回对象.但是,您可以看到第一个GetEnumerator().Current为null,最后以某种方式返回一个对象.
linq Last()如何工作?
var.GetEnumerator().Current var.Last()
解决方法
从使用
Reflector在System.Core.dll:
public static TSource Last<TSource>(this IEnumerable<TSource> source) { if (source == null) { throw Error.ArgumentNull("source"); } IList<TSource> list = source as IList<TSource>; if (list != null) { int count = list.Count; if (count > 0) { return list[count - 1]; } } else { using (IEnumerator<TSource> enumerator = source.GetEnumerator()) { if (enumerator.MoveNext()) { TSource current; do { current = enumerator.Current; } while (enumerator.MoveNext()); return current; } } } throw Error.NoElements(); }