【问题标题】:Lambda expressions: index of an element in the arrayLambda 表达式:数组中元素的索引
【发布时间】:2014-09-16 12:11:20
【问题描述】:
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);

这些是取自 http://msdn.microsoft.com/en-us/library/bb397687.aspx 的 C# 代码

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

但是,第三个 lambda 表达式确实与“索引”混淆了。 (n,index) 是为数组建立良好的 lambda 参数之一吗?这是一个约定吗?

【问题讨论】:

  • index 是数组中元素的索引,这个表达式返回数组中的所有元素,直到遇到一个值小于其位置的数字。OK ?
  • 这只是TakeWhile() 接受的委托的一部分。你可以在这里阅读:msdn.microsoft.com/en-us/library/vstudio/…。查看 谓词 参数。
  • 当您查看该特定方法的文档时,您发现了什么,您对其中的哪些方面感到困惑?

标签: c# lambda


【解决方案1】:

TakeWhile 迭代集合时:

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

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);

输出:

5
4

在以下位置运行:https://dotnetfiddle.net/4NXRkg

【讨论】:

    猜你喜欢
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多