c# – IEnumerable.Last()是否针对List进行了优化?
发布时间:2020-12-15 08:26:49 所属栏目:百科 来源:网络整理
导读:我有一个List T,名为L,包含N个项目. 是L.Last(),IEnumerable T扩展方法,在线性时间内运行所有N个项目? 或者内部优化是否具有L [L.Count – 1]的恒定时间性能? 解决方法 你是对的,如果你看看代码如何实现Last(来自Reflector): public static TSource LastT
我有一个List< T>,名为L,包含N个项目.
是L.Last(),IEnumerable< T>扩展方法,在线性时间内运行所有N个项目? 或者内部优化是否具有L [L.Count – 1]的恒定时间性能? 解决方法
你是对的,如果你看看代码如何实现Last(来自Reflector):
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(); } 它实际上优化了List< T>通过返回列表[count – 1]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容