C#中Lambda表达式的作用是什么

今天就跟大家聊聊有关C#中Lambda表达式的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

成都创新互联公司是一家集网站建设,安岳企业网站建设,安岳品牌网站建设,网站定制,安岳网站建设报价,网络营销,网络优化,安岳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

1. Lamdba 表达式是一个委托类型:

MethodInvoker invoker = () => { Console.WriteLine(); };  //is actually equal to the following form.    MethodInvoker invoker = delegate() { Console.WriteLine(); };  //这里是Lamdba 表达式的匿名委托的用法

2. Lamdba 表达式可以用作匿名方法

MethodInvoker invoker = new MethodInvoker(() => { Console.WriteLine(); });   //相当于:    MethodInvoker invoker = new MethodInvoker(MyFunc);    partial void MyFunc()    {      Console.WriteLine();    }

我们知道, 当构造一个新的委托的时候, 他的构造器需要一个函数指针作参数,这个函数指针是委托类型的

实际上,当我们这样去new 一个委托的时候:

MethodInvoker invoker = new MethodInvoker(MyFunc);

"MyFunc" 就是一个委托,而不只是一个函数名的存在. 编译器将为这个构造函数生成一个匿名委托:

MethodInvoker invoker = new MethodInvoker(delegate() { MyFunc(); });

可以这样理解编译器的行为: 匿名方法其实也就是委托。

那么为什么我们可以这么写呢:

MethodInvoker invoker = () => { Console.WriteLine(); };

我们来看一看:

首先,这个委托的构造器需要一个委托参数,所以通常我们得这样写:

MethodInvoker invoker = new MethodInvoker(delegate() { MyFunc(); });

但是匿名的delegate 可以转化成函数指针 (void() target):

所以这样写是可以的:

MethodInvoker invoker = new MethodInvoker(MyFunc);  //而匿名的委托又可以描述为Lambda表达式    MethodInvoker invoker = new MethodInvoker(() => { Console.WriteLine(); });  //另外一方面,由于编译器对"宽松委托"的支持, MethodInvoker类委托可以转化成匿名类委托:    MethodInvoker invoker = delegate() { Console.WriteLine(); };  //而匿名的委托又可以用Lambda表达式来描述    MethodInvoker invoker = () => { Console.WriteLine(); };

从上面,我们可以看到一个复杂的委托是如何转化成简洁的Lambda表达式的。这对程序员来说无疑又是提高生产力的一个体现!

看完上述内容,你们对C#中Lambda表达式的作用是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。

网页标题:C#中Lambda表达式的作用是什么
本文链接:https://www.cdcxhl.com/article18/pocpgp.html

成都网站建设公司_创新互联,为您提供商城网站手机网站建设品牌网站建设搜索引擎优化网站制作ChatGPT

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发