Lambda表达式浅谈-01

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

已经有一段时间没有发布博文了...

今天就写一写lambda的一些简单的使用方法

Lambda 在Msdn 上的描述:

Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。 Lambda 表达式对于编写 LINQ 查询表达式特别有用。

若要创建 Lambda 表达式,需要在 Lambda 运算符 => 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。 例如,lambda 表达式 x => x * x 指定名为 x 的参数并返回 x 的平方值。

其实Lambda中是使用委托,下面可以写一个Demo 来验证它是如何使用的

下面是写的测试代码

static D d;

static D2 d2;

static D3 d3;

static void Main(string[] args)

{

int j = 0;

//使用委托的方式

d = () => { j = 10; return j > 3; };

d2 = (x) => { return x == j; };

d3 = (x) => { x += 1; };

//Lambda

Func<bool> fd = () => { j = 10; return j > 3; };

Func<int, bool> fd2 = (x) => { return x == j; };

Action<int> fd3 = (x) => { x += 1; };

}

}

通过反编译之后的源码:

从源码看得出Lambda表达式的实质上是以委托的形式传递的

[flash=500,400]http://s1.knowsky.com/20160211/z4p0ury4j5423.png[/flash][flash=500,400]http://s1.knowsky.com/20160211/4w5vrvccwqb23.png[/flash]

要注意的一点:

Action<T1, …, T16> 可以接收1个到16个参数的无返回值泛型委托Func<T1, …, T16, Tout> 可以接收0到16个参数并且有返回值的泛型委托[flash=500,400]http://s1.knowsky.com/20160211/o5bhv211plm23.png[/flash]

就写到这吧,或许讲述的不到位。如果有不妥,还请指正。谢谢支持。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航