这是从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/

10-08 23:19