初识委托,泛型委托,表达式树,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的主要内容,如果未能解决你的问题,请参考以下文章