C# Lambda表达式:数组中元素的索引 int[]数字={5,4,1,3,9,8,6,7,2,0}; int oddNumbers=numbers.Count(n=>n%2==1); var firstNumbersLessThan6=numbers.TakeWhile(n=>nn>=index);

C# Lambda表达式:数组中元素的索引 int[]数字={5,4,1,3,9,8,6,7,2,0}; int oddNumbers=numbers.Count(n=>n%2==1); var firstNumbersLessThan6=numbers.TakeWhile(n=>nn>=index);,c#,lambda,C#,Lambda,这些是取自 通过将n作为数组“numbers”的元素,我可以很好地理解前两个lambda表达式 然而,第三个lambda表达式实际上与“index”混淆了。(n,索引)是数组的lambda参数之一吗?这是惯例吗 当TakeWhile迭代集合时: n是元素的值 index是元素的索引 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int oddNumbers = numbers.Count(n => n % 2 == 1); var fi

这些是取自

通过将n作为数组“numbers”的元素,我可以很好地理解前两个lambda表达式


然而,第三个lambda表达式实际上与“index”混淆了。(n,索引)是数组的lambda参数之一吗?这是惯例吗

TakeWhile
迭代集合时:

n
是元素的值
index
是元素的索引

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int oddNumbers = numbers.Count(n => n % 2 == 1);
var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);
var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);
输出:

5
4


在:

index meens index of element in array,这个表达式返回numbers数组中的所有元素,直到遇到一个值小于其位置的数字。确定吗?它只是
TakeWhile()
接受的委托的一部分。您可以在此处阅读:。查看谓词参数。当您查看该特定方法的文档时,您发现了什么?您发现了哪些方面令人困惑?
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
// As TakeWhile iterates over the array: 
//   "n" is the value of the element
//   "index" is the index of the element
var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);
foreach(var n in firstSmallNumbers)
    Console.WriteLine(n);