表达式lambda和语句lambda之间有区别吗?
如果是这样,有什么区别?
在下面的链接中找到了这个问题,但无法理解答案 什么是Expression Lambda?
该链接中提到的答案是这样的 右侧有表达式的lambda表达式称为表达式lambda。
根据我的理解,表达式始终只在右侧。这就是我提出这个问题的原因。有什么我不知道的吗?
答案 0 :(得分:42)
这确实令人困惑的行话;我们无法想出更好的东西。
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); }
前三个是表达式lambdas ,因为lambda运算符的右侧是一个表达式。最后三个是语句lambdas ,因为lambda运算符的右侧是块。
这也说明左侧有三种可能的语法:单个参数名称或无类型参数的带括号的列表,或带括号的参数列表。
答案 1 :(得分:15)
是的 - 或者我应该说一个人定义了另一个。
lambda表达式允许您分配简单的匿名函数。
表达式lambda 是一个类型的lambda,在lambda运算符的右边有一个表达式。
另一种类型的lambda表达式是语句lambda ,因为它在表达式的右侧包含一个语句块{...}
。
number => (number % 2 == 0)
number => { return number > 5 }
答案 2 :(得分:9)
lambda表达式是一种语法,允许您在代码中直接创建一个没有名称的函数,作为表达式。
有两种lambda表达式,具体取决于它们的主体:
(i, j) => i + j
(i, j) => { return i + j; }
答案 3 :(得分:1)
lampda表达式是一个匿名函数,编译器可以将其转换为Func<T>
或Expression<Func<T>>
(由编译器根据使用情况推断)。
“表达式lamdba”的含义并不完全清楚,但是如果您在播客/网络广播中听过这句话,那么它可能或者指的是lambda表达式。或者它可以是属性Expression.Lambda,用于从Expression实例获取lambda。