C# 中的 Lambda 表达式是什么?


Lambda 表达式是表示匿名方法的更好方法。匿名方法和 Lambda 表达式都允许您内联定义方法实现,但是,匿名方法明确要求您为方法定义参数类型和返回类型。

表达式 Lambda,其主体为表达式:(输入参数) => 表达式

语句 Lambda,其主体为语句块:(输入参数) => { <语句序列> }

任何 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 表达式块外部进行跳转也是错误的。

更新于: 2020年11月5日

463 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告