初识委托,泛型委托,表达式树,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);

猜你喜欢

转载自www.cnblogs.com/HansZimmer/p/9268875.html
今日推荐