表达式lambda和语句lambda的区别

本文关键字:lambda 区别 表达式 语句 | 更新日期: 2023-09-27 18:19:20

表达式lambda和语句lambda之间有区别吗?

如果是,有什么区别?

在下面的链接中找到了这个问题,但是看不懂答案什么是表达式Lambda?

c#面试问题

链接中提到的答案是这样的右边有表达式的lambda表达式称为表达式lambda。

根据我的理解,表达式总是只在右手边。这就是我问这个问题的原因。有什么我不知道的吗?

表达式lambda和语句lambda的区别

这确实是令人困惑的术语;我们想不出更好的办法了。

lambda表达式是以下任何一种的统称:

x => M(x)
(x, y) => M(x, y)
(int x, int y) => M(x, y)
x => { return M(x); }
(x, y) => { return M(x, y); }
(int x, int y) => { return M(x, y); }

前三个是表达式lambda ,因为lambda操作符的右侧是一个表达式。后三个是语句lambda ,因为lambda操作符的右侧是

这也说明了左侧有三种可能的语法:单个参数名,或带括号的未类型化参数列表,或带括号的类型化参数列表。

有——或者我应该说一个定义了另一个。

lambda表达式允许您分配简单的匿名函数。

表达式lambda 是lambda的类型,在lambda操作符的右侧有一个表达式。

另一种类型的lambda表达式是语句lambda,因为它在表达式的右侧包含一个语句块{...}

    表达式lambda的形式为:number => (number % 2 == 0)
  • 语句lambda的形式为:number => { return number > 5 }

lambda表达式是一种语法,允许您直接在代码中创建一个没有名称的函数,作为表达式。

有两种lambda表达式,取决于它们的主体:

  • 表达式lambdas,其主体只是一个表达式,例如(i, j) => i + j
  • 语句lambdas,其主体是一个完整语句,例如…(i, j) => { return i + j; }

lampda表达式是一个匿名函数,编译器可以将其转换为Func<T>Expression<Func<T>>(由编译器根据使用情况推断)。

不完全清楚你所说的"表达式lambda"是什么意思,但如果你在播客/网络广播或其他地方听到过这个短语,它可能指的是lambda表达式。也可以是性质表达式。

,用于从Expression实例获取Lambda。