这是从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语句可以防止循环其余列表。无论如何,都会发生错误。对于起初发现一个以上项目的大型列表,我认为这将有很大的不同。
最佳答案
乔恩·斯基特found this while reimplementing LINQ to objects as part of his EduLinq blog series:
在Connect issue in question中,Microsft说:
那是在2011年4月...
关于c# - Linq的SingleOrDefault函数中的优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14940434/