猿问
LastOrDefault() 和 Last() 方法是否迭代列表中的每个元素?
LastOrDefault() 和 Last() 方法是否
迭代
列表中的每个元素以找到最后一个元素?或者他们是否通过基于元素的
索引
进行搜索来返回值?
繁华开满天机
浏览 166
回答 1
1回答
紫衣仙女
如果它是一个类型,IList那么不,它不会迭代每个元素,因为这会非常低效。这就是他们所做的: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> e = source.GetEnumerator()) { if (e.MoveNext()) { TSource result; do { result = e.Current; } while (e.MoveNext()); return result; } } } throw Error.NoElements(); }和LastOrDefault:public static TSource LastOrDefault<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> e = source.GetEnumerator()) { if (e.MoveNext()) { TSource result; do { result = e.Current; } while (e.MoveNext()); return result; } } } return default(TSource);}请注意,由于每种方法都有几个重载,我在上面只展示了其中一个,但是如果您对其他方法感兴趣
0
0
0
随时随地看视频
慕课网APP
相关分类
C#
typedef入门问题
1 回答
我要回答