linq的Any()在内部是如何工作的?

4

我很想知道一些集合的Any()方法是如何实现的,我该如何查看这段代码?


1
http://www.codeproject.com/Articles/383749/How-does-it-work-in-Csharp-Part-3-Csharp-LINQ-in-d#paraIdAny - gunr2171
2
你可以随时获取 .net 的完整源代码:http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx - gunr2171
1个回答

11

所有的LINQ方法实际上都是IEnumerable的扩展方法。

以下是Reflector反编译Any LINQ方法的结果:

public static bool Any<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 local in source)
    {
        if (predicate(local))
        {
            return true;
        }
    }
    return false;
}

1
如果它有其他行为,我会感到困惑。 - Anthony
2
@anthony-arnold 看看 Math.Abs(),你就会明白 :D - Bart Calixto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接