Nik*_*wal 0 c# linq vb.net ienumerable
我尝试在MSDN,SO和Web上搜索,但找不到答案.
说我有一个我喜欢的收藏品FirstOrDefault().我们说它找到了这个项目.它会停止并返回该项目还是继续搜索并阻碍性能?
如果你对此仍然含糊不清,那么.NET框架中的源代码就是从这里实现的:
public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source) {
if (source == null) throw Error.ArgumentNull("source");
IList<TSource> list = source as IList<TSource>;
if (list != null) {
if (list.Count > 0) return list[0];
}
else {
using (IEnumerator<TSource> e = source.GetEnumerator()) {
if (e.MoveNext()) return e.Current;
}
}
return default(TSource);
}
public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource>source, Func<TSource, bool> predicate) {
if (source == null) throw Error.ArgumentNull("source");
if (predicate == null) throw Error.ArgumentNull("predicate");
foreach (TSource element in source) {
if (predicate(element)) return element;
}
return default(TSource);
}
Run Code Online (Sandbox Code Playgroud)
显然,如果成立,它将停止