编程语言
首页 > 编程语言> > c# – lambda表达式中的变量如何赋值

c# – lambda表达式中的变量如何赋值

作者:互联网

以下示例中的索引如何获取其值?我知道n是从源数字中自动获得的,但是,虽然含义很明确,但我没有看到索引是如何赋值的:

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);

TakeWhile的签名是:

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

解决方法:

此版本的TakeWhile提供序列中源元素的索引作为谓词的第二个参数.即谓词被称为谓词(5,0),然后是谓词(4,1),谓词(1,2),谓词(3,3)等.见the MSDN documentation.

还有一个“更简单”的函数版本,只提供序列中的值,见MSDN.

标签:c,lambda,linq,extension-methods,generic-method
来源: https://codeday.me/bug/20190526/1157013.html