c# - 如何阅读这个 lambda 表达式

标签 c# .net lambda

谁能读懂下面这行 lambda。

n => n % 2 == 1 

此外,如果我必须在没有 lambda 的情况下编写同一段代码,我将如何编写。这可能会让我明白。

下面是另外一段代码

List<int> numbers = new List<int>{11,37,52};
List<int> oddNumbers = numbers.where(n => n % 2 == 1).ToList();

最佳答案

大声朗读表达式是

n 'goes to' n modulus two equals one
n     =>    n    %     2    ==    1

本质上,您可以将此 lambda 视为一个函数,当提供给它的值 (n) 为奇数且为正时返回 true,否则返回 false。你也可以把它写成一个方法

bool IsOddAndPositive(int n)
{
    return n % 2 == 1;
}

在您的代码段中使用它会是

List<int> numbers = new List<int>{11, 37, 52};
List<int> oddNumbers = numbers.Where(IsOddAndPositive).ToList();

结果(您指定的内容和方法示例的结果)是

11, 37

关于c# - 如何阅读这个 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18349799/

相关文章:

c# - 如何评论为什么可以忽略捕获

c# - 如何查看每秒更新的图表中的最后 10 个数据点?

c# - 关于委托(delegate)的澄清

linq - lambda 比 linq 查询快吗?

c# - 如何使用 C# 在 RSS 提要的 channel 元素内插入元素 <item>..</item>?

c# - 在 LINQ 中,orderby() 是只执行一次比较函数还是在需要时执行它?

.net - WCF maxConnections 属性

c# - 动态生成时自定义 C# Enum ToString()

c++ - 如何使用 std::find 从 vector< pair < string, string >> 类型的第一个元素中查找字符串?

c++ - 如果未指定返回类型,递归 lambda 将无法编译