下面例子中的 index 是如何获取它的值的?我知道 n 是从源 numbers 自动获取的,但是,虽然含义很清楚,但我不知道 index 是如何赋予其值的:

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 提供序列中源元素的索引作为谓词的第二个参数。 IE。谓词被称为 predicate(5, 0),然后是 predicate(4, 1)、predicate(1, 2)、predicate(3, 3) 等。参见 the MSDN documentation

该函数还有一个“更简单”的版本,仅提供序列中的值,请参阅 MSDN

关于c# - lambda 表达式中的变量如何给定其值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4838419/

10-12 06:42