csharp中的Action,Func,Predicate

我们知道委托非常强大,首先我们要使用委托解决的就是对象之间信息的“逆向传递问题”。

其次,其实委托还有很多的用途。(匿名方法、Lambda表达式,和泛型结合)最后,我们在学到一定程度的时候,

我们必须研究底层原理。(比如我们学EntityFramework,linq各种查询,扩展方法)

一、匿名方法、Lambda表达式

1、匿名方法的概念:一个方法没有具体的名称,而只有关键字delegate、方法参数、方法体,这种方法是匿名方法。

匿名方法的好处:将具体方法和委托直接关联到一起,如果我们基于委托只需要一个方法的时候,匿名方法肯定是显得简单。

2. Lambda表达式:在C#3.0出现的。使用这种表达的可以更简练的编写代码块。

      CalculatorDelegate cal3 = (int a, int b) => { return a + b; };
      CalculatorDelegate cal4 = (a, b) => a - b;

【1】在Lambda表达式中参数类型可以是明确类型,也可以是推断类型。
【2】如果是推断类型,则参数类型可以由编译根据上下文自动推断出来。
【3】运算符=> 读作goes to  ,运算符左边输入参数(如果有),右边是表达式或语句块。
【4】表达式两种方式:

         (input  args)=>表达式
         (input  args)=>{ 语句1;语句2;语句3.

猜你喜欢

转载自blog.csdn.net/qq_41617901/article/details/110749918
今日推荐