当前位置:   article > 正文

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

c# =>定义函数

一、函数式编程

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

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

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

2.1 =>构建简单带参函数

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

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

2.2 =>构建不带参函数

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

 

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

2.3 =>构建无返回值函数

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

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

2.4 =>表达式嵌套

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

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

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

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

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

            

  1. var add3= add2(3);
  2. Console.WriteLine(add3(0));
  3. 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/115693
推荐阅读
相关标签
  

闽ICP备14008679号