【C#函数式编程】C#中的函数式编程(一) —— =>表达式

一、函数式编程

        函数式编程,简单来理解,就是把函数当成是组成一个功能模块最小的单位。相对于之前接触的面向对象的思想,把类对象当成一个功能模块的组成部件,在函数式编程中把函数也当成一个可拆卸的对象。 

二、C#中的Lambda表达式=>

        Labmda也称作匿名函数,在C#中我们通过一个简单的符号”=>”即可定义一个lamda表达式,下面分别针对不同的=>的使用方法进行总结:

2.1 =>构建简单带参函数

    Func<int, int, int> add =(x, y) => x + y;
    int r = add(1, 2);

       我们通过了=>构建了一个匿名函数,并将其赋值给变量add,以后我们就可以把add当成函数来使用了。=>前面的部分表示构建匿名函数的参数列表,后面部分表示函数的返回值。我们构建的函数中接收想x、y两个整形的参数,返回x+y两个参数的和。

2.2 =>构建不带参函数

        当=>前面的参数列表为空时,我们可以构建一个不带参的匿名函数:

 

    Func<int>func = () => 123;
    Console.WriteLine(func());

2.3 =>构建无返回值函数

        我们也可以使用=>构建无返回值的函数,但是此时要求=>后面必须是一个完整的表达式,并且我们需要用Action函数模板才能接受:

     Action<int>print = x => Console.WriteLine(x);
     print(456);

2.4 =>表达式嵌套

        用=>表达式构建的匿名函数还可以返回另外一个匿名函数,比如下面的例子:

    Func<int, Func<int, int>> add2= x => y => x + y;
    r = add2(2)(8);
    Console.WriteLine(r);

        为了便于分析我们可以将=>有部分用()括起来:

    Func<int, Func<int, int>> add2= x =>( y => (x + y));

        这样就很清晰的看出来整个=>表达式的结构,外层的=>左边为匿名函数接收的参数x,内右边为其返回的结果,仍然是一个=>表达式。内层的=>表达式接收一个参数y作为参数,返回x+y的结果。我们可以按照上面的例子调用嵌套的=>表达式,也可以将外层的=>先声明为一个函数对象,在按照内层=>的格式进行调用:

            

    var add3= add2(3);
    Console.WriteLine(add3(0));
    Console.WriteLine(add3(1));

        上面的例子,我们声明了一个函数对象add3并赋值add2(3),这样在以后我们使用add3传入任何参数时,都会在该参数的基础之上加3并进行返回。


Github位置:
https://github.com/HymanLiuTS/CSGroup
克隆本项目:
git clone git@github.com:HymanLiuTS/ CSGroup.git
获取本文源代码:
git checkout CSL02

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值