C# 中的 Lambda 表达式是什么?
Lambda 表达式是表示匿名方法的更好方式。匿名方法和 Lambda 表达式都允许以内联方式定义方法实现,但是,匿名方法需要明确定义方法的参数类型和返回类型。
以表达式作为主体的表达式 lambda: (input−parameters) => 表达式
以语句块作为主体的语句 lambda: (input−parameters) => { <sequence−of−statements> }
任何 lambda 表达式都可以转换为委托类型。 lambda 表达式可以转换为的委托类型由其参数和返回值的类型定义。如果 lambda 表达式没有返回值,则可以将其转换为 Action 委托类型之一;否则,它可以转换为 Func 委托类型之一。
static void Main(string[] args){
Func<int, int> square = x => x * x;
Console.WriteLine(square(5));
Console.ReadLine();
}
在 => 运算符右侧带有表达式的 lambda 表达式称为表达式 lambda。表达式 lambda 返回表达式的结果,并采用以下基本形式
Action line = () => Console.WriteLine();
Func<double, double> cube = x => x * x * x;
Func<int, int, bool> testForEquality = (x, y) => x == y;
Func<int, string, bool> isTooLong = (int x, string s) => s.Length => x;
C# 7.0 中,C# 语言内置了对元组的支持。您可以将元组作为参数传递给 Lambda 表达式,并且 Lambda 表达式也可以返回元组。
在 Lambda 表达式中引入的变量在封闭方法中不可见。
Lambda 表达式不能直接从封闭方法中捕获 in、ref 或 out 参数。
Lambda 表达式中的 return 语句不会导致封闭方法返回。
如果跳转语句的目标位于 Lambda 表达式块之外,则 Lambda 表达式不能包含 goto、break 或 continue 语句。如果目标位于块内部,则在 Lambda 表达式块外部包含跳转语句也是错误的。

