初识委托,泛型委托,表达式树,Lanbda

Posted hanszimmer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识委托,泛型委托,表达式树,Lanbda相关的知识,希望对你有一定的参考价值。

委托

public delegate int CalculatorAdd(int x,int y);    //第一步:首先用delegate定义一个委托

CalculatorAdd cAdd = new CalculatorAdd(Add);   //第三步:用方法来实例化这个委托

int result = cAdd.Invoke(5,6);

public int Add(int x,int y)             //第二步:申明一个方法来对应委托

{

  return  x+y;
}

匿名方法(微软简化委托三步,所以是锦上添花可有可无)

public delegate int CalculatorAdd(int x,int y);    //第一步:首先用delegate定义一个委托

CalculatorAdd cAdd = delegate(int x,int y){return x+y;}  //第二步:用这样的方法delegate(int x,int y){return x+y;},把一个方法赋值给委托

Lambda表达式(不管是匿名方法还是Lambda表达式,完成一个委托的引用都是先定义一个委托,然后用一个方法来实例化一个委托)

public delegate int CalculatorAdd(int x,int y);

CalculatorAdd cAdd = (x,y)=>x+y;

int result = cAdd(5,6);

泛型委托(用Func来简化一个委托的定义,叫泛型委托)

Func<int,int,int> cAdd1 = (int x,int y)=>{return x+y;}

int result = cAdd(5,6);

表达式树(表达式树是存放委托的容器,要用Ladmbda表达式的时候,直接从表达式中获取出来,Compile()就可以直接用了)

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

Func<int,int,int> fun = exp.Compile();

int result = fun(2,3);

 


以上是关于初识委托,泛型委托,表达式树,Lanbda的主要内容,如果未能解决你的问题,请参考以下文章

C#复习总结细说泛型委托

#yyds干货盘点#愚公系列2023年02月 .NET/C#知识点-委托匿名方法Lambda泛型委托表达式树的进化史

C# 委托 —— 委托 泛型委托与Lambda表达式

委托泛型委托多播委托 和 lamda表达式

委托泛型委托多播委托匿名函数lamda表达式事件

C#复习总结细说匿名方法