[c#]Lambda 参数是如何映射在 TakeWhile?

标签: Linq Lambda C#
发布时间: 2017/2/28 23:16:16
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在学习 LINQ 使用101 LINQ 示例 MSDN 页面中,遇到了这段代码︰

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);

foreach (var n in firstSmallNumbers)
{
    Console.WriteLine(n);
}

此功能的目的是要"使用 TakeWhile 返回元素从数组的开头开始,直到碰到小于其在数组中的位置的数字"。

究竟如何 nindex 知道哪个参数采取?(即如何并 n 知道它将采取 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 和如何做 index 知道它将做增量的 0、 1、 2、 3...)?

解决方法 1:

因为超载指那种方式。从MSDN

public static IEnumerable<TSource> TakeWhile<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, int, bool> predicate
)

predicate参数描述如下︰

用于测试一个条件; 为每个源元素的函数函数的第二个参数表示源元素的索引。

TSource参数是政府项目,和 int 的索引。bool是返回值。

当你写 (n, index) => ... n 需要的第一个参数 ( TSource ) 和 index 需要第二个 ( int )。

官方微信
官方QQ群
31647020