首页 > 其他 > 详细

详解Lambda

时间:2014-06-28 19:19:14      阅读:307      评论:0      收藏:0      [点我收藏+]

定义好委托:

public delegate int FirDelegate(int a);

public delegate int SecDelegate(int a,int b);

public delegate string ThrDelegate(int a);

 

lambda表达式其实是个匿名函数,第一个lambda表达式:

FirDelegate fir = p => p + 10;//实例化一个委托

fir(100);//调用,结果为110

 

第二个lambda表达式:

SecDelegate sec = (p,q) => p + q;//实例化一个委托
sec(20,30);//调用,结果为50

 

第三个lambda表达式:

 ThrDelegate thr = p =>
{
   if (p < 50)
  {
      return "输入了小于50的数!";
  }
  else
  {
      return "这个数不小于50!好大!";
  }
};
thr(30);//调用,结果为"输入了小于50的数!"

 

 第四个lambda表达式,希望传入两个int参数,返回string的结果:

Func<int,int,string> four = (p,q) =>
{
  return p + " + " + q + " 的结果是: " + (p + q);
};
four(10,20);//调用,结果为"10 + 20 的结果是: 30"

 

我们本应该定义一个委托:public delegate string FourDelegate(int a,int b);

然后给它实例化:FourDelegate four = ......;

 

然而,Func<param[],out TResult>给我们免去了这一步骤,需要任意个任意类型任意返回值的委托不再需要定义了。

前面N个是参数及类型,最后一个是返回值及类型。

 

关于lambda表达式中的return:

有大括号的,需加return。

无大括号的,不能加return。

 

 

 

详解Lambda,布布扣,bubuko.com

详解Lambda

原文:http://www.cnblogs.com/dengshaojun/p/3797040.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!