标签:index return list linq source IList ElementAt null
源码:
public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, int index) { if (source == null) throw Error.ArgumentNull("source"); IList<TSource> list = source as IList<TSource>; if (list != null) return list[index]; if (index < 0) throw Error.ArgumentOutOfRange("index"); using (IEnumerator<TSource> e = source.GetEnumerator()) { while (true) { if (!e.MoveNext()) throw Error.ArgumentOutOfRange("index"); if (index == 0) return e.Current; index--; } } } public static TSource ElementAtOrDefault<TSource>(this IEnumerable<TSource> source, int index) { if (source == null) throw Error.ArgumentNull("source"); if (index >= 0) { IList<TSource> list = source as IList<TSource>; if (list != null) { if (index < list.Count) return list[index]; } else { using (IEnumerator<TSource> e = source.GetEnumerator()) { while (true) { if (!e.MoveNext()) break; if (index == 0) return e.Current; index--; } } } } return default(TSource); }
具体实现转换成了List<T>,使用下标获取值,还有使用了using。
标签:index,return,list,linq,source,IList,ElementAt,null 来源: https://www.cnblogs.com/Insist-Y/p/15561571.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。