C# · 12月 27, 2021

c# – linq Last()如何工作?

我不明白当前可以是null,最后一个可以是一个对象,而最后一个是LINQ函数.我以为最后使用GetEnumerator并持续进行直到当前== null并返回对象.但是,您可以看到第一个GetEnumerator().Current为null,最后以某种方式返回一个对象.

linq Last()如何工作?

var.GetEnumerator().Currentvar.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();}