C# Lambda表达式
用于学习记录
原文链接:https://blog.csdn.net/wnvalentin/article/details/81840339
Lambda表达式
自从C# 3.0开始,delegate就被Lambda表达式取代,而且Lambda表达式用起来更简单。Lambda表达式本质上是改进的匿名方法。
Lambda表达式的灵感可能是来源于数学中的函数表达式:
λ:x —> x2
Lambda表达式把其中的箭头用 => 符号表示。
Lambda表达式已经应用在很多地方了,例如方法体表达式(Expression-Bodied Methods)、自动只读属性表达式等等。
Lambda表达式形式上分为两种:
1 .表达式Lambda
当匿名函数只有一行代码时,可采用这种形式。例如:
CompareDelegate LambdaCompare = (s4, s5) => s4.Age <= s5.Age;
其中=>符号代表Lambda表达式,它的左侧是参数,右侧是要返回或执行的语句。参数要放在圆括号中,若只有一个参数,为了方便起见可省略圆括号。有多个参数或者没有参数时,不可省略圆括号。
相比匿名函数,在表达式Lambda中,方法体的花括号{}和return关键字被省略掉了。
其实,上文定义NumSmaller()和Younger()方法时,由于这两个方法主体只有一行代码,所以用的也是表达式Lambda,这是Lambda表达式的推广, 是C# 6 编译器提供的一个语法糖。
2. 语句Lambda
当匿名函数有多行代码时,只能采用语句Lambda。例如,上面的表达式Lambda可改写为语句Lambda:
CompareDelegate LambdaCompare = (s4, s5) => { return s4.Age <= s5.Age;};
语句Lambda不可以省略{}和return语句。