C#中的Lambda表达式

概述

 Lambda 表达式,是一种简化的匿名函数,可用于创建委托或表达式目录树。其次,你也可以将 Lambda 表达式作为参数进行传递,或者将它作用于函数调用值调用后返回的一个函数来使用。我们经常在 LINQ 中使用 Lambda 表达式。

Lambda的语法结构如下:

(Input Params) => Expression
  1. 中间的"=>" 是Lambda的操作符,一般读作"goes to"
  2. 左边的部分"Input Params"是Lambda表达式的输入参数,当且仅当只有一个参数的时候,括号可以忽略,其他情况哪怕参数个数是0个,也不能忽略.
  3. 右边的部分"Expression"是语句(Expression)或者代码块(Statement),当且仅当只有一行代码时,大括号可以忽略,其他情况均不可忽略,参考以下样例:
() => Console.WriteLine("No Params")  // 0 个参数,左边的圆括号不能省略
x => x * x   // 1个参数,左边的圆括号可加可不加
(x, y) => x - y     // 2个参数,左边的圆括号不能省略
(x, y) => { x += y; Console.WriteLine(x); }   // 大括号不能省略

作用

Lambda 表达式是一个匿名函数,用它可以高效简化代码,常用作委托,回调
Lambda 表达式都使用运算符=>,所以当你见到这个符号,基本上就是一个 Lambda 表达式
Lambda 运算符的左边是输入参数(),=>,右边是表达式或语句块
Lambda 表达式,是可以访问到外部变量的

优势

Lambda表达式是为了简化C#的代码而出现的
Lambda表达式不用定义函数名,直接就是参数列表加函数体,避免了函数对命名空间的污染。下面这个就可以体现出来

lambda是如何简化的?

写一个匿名方法

Func<int, int, string> f1 = delegate (int i, int j) {
    return i + j;
};
Console.WriteLine(f1(3,5))

匿名方法可以写成lambda表达式

Func<int, int, string> f2 = (int i, int j) =>{
    return i + j;
};
Console.WriteLine(f2(3,5))

可以省略参数数据类型,因为编译器根据委托类型推断出参数类型用=>引出来方法体

Func<int, int, string> f3 = (i, j) =>{
    return i + j;
};
Console.WriteLine(f3(3,5))

如果委托没有返回值,且方法体只有一行代码,可省略{}

//Action f5 = () =>{Console.WriteLine("11111");};
Action f5 = () =>Console.WriteLine("11111");
f5();

如果=>之后的方法体中只有一行代码,且方法有返回值,那么可以省略方法体的{}以及return

Func<int, int, string> f6 = (i1, i2) => "i1 + i2";

如果只有一个参数,参数的()可以省略

Action<string> f1 = s => Console.WriteLine(s);
Func<int, bool> f2 = i => i > 5;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值