Lambda Expression的工作原理

Usm*_*man 20 c# linq lambda

在一次采访中,面试官问我以下查询

int[] array = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Func<int, int> func = i =>
{
    Console.Write(array[i]);
    return i;
};

var result = array.Where(e => e <= func(2)).ToArray();
Run Code Online (Sandbox Code Playgroud)

任何人都会指导我如何e <= func(2)运作?以及如何最后一行即

var result = array.Where(e => e <= func(2)).ToArray();
Run Code Online (Sandbox Code Playgroud)

作品?

Las*_*olt 7

如果使用括号,可能更容易理解:

var result = array.Where(e => (e <= func(2))).ToArray();
Run Code Online (Sandbox Code Playgroud)

这个

e => ...
Run Code Online (Sandbox Code Playgroud)

构造一个带有一个参数的函数.

这个

e <= func(2)
Run Code Online (Sandbox Code Playgroud)

比较efunc(2).用参数func(2)调用函数.func2

总而言之,与此<=毫无关系=>.他们是两个完全不同的运营商.总结... => ...构造一个函数.... <= ...比较参数.

  • 换句话说,`=>`是"⇒"的不良近似值,而`<=`是"≤"的更差近似值. (12认同)