下面是从 SingleOrDefault 函数中提取的代码:
public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) {
if (source == null) throw Error.ArgumentNull("source");
if (predicate == null) throw Error.ArgumentNull("predicate");
TSource result = default(TSource);
long count = 0;
foreach (TSource element in source) {
if (predicate(element)) {
result = element;
checked { count++; }
}
}
switch (count) {
case 0: return default(TSource);
case 1: return result;
}
throw Error.MoreThanOneMatch();
}
我想知道是否有任何理由在循环中找到多个元素后,没有 break 语句来防止循环列表的其余部分。无论如何,都会发生错误。对于一开始就发现不止一个项目的大列表,我认为这会产生巨大的影响。