Csharp/C#教程:C#基础之Lambda表达式用法实例教程分享

本文以实例形式介绍了C#中Lambda表达式的用法,分享给大家供大家参考之用。具体如下:

从委托的角度来看,Lambda表达式与匿名方法没有区别。在前面C#基础之匿名方法一文中,我们使用了匿名方法来调用List<T>的FindAll方法。从C#3.0开始,在使用匿名方法的地方,完全可以用Lambda表达式来代替。Lambda表达式的定义方式为:“([参数列表])=>表达式”。运算符“=>”是一种与赋值运算“=”具有相同优先级的右结合运算符,在英语里读作:“goesto”。

现在回过头来看我们的例子。下面的代码与之前C#基础之匿名方法一文中的代码具有相同的效果:

classProgram { staticvoidMain(string[]args) { List<string>names=newList<string>(); names.Add("SunnyChen"); names.Add("KittyWang"); names.Add("SunnyCrystal"); List<string>found=names.FindAll ( //LambdaExpressionImplementation name=>name.StartsWith( "sunny", StringComparison.OrdinalIgnoreCase) ); if(found!=null) { foreach(stringstrinfound) Console.WriteLine(str); } } }

上面的LambdaExpressionImplementation在效果上与匿名方法没有任何区别,“=>”左边的name定义了参数(当参数个数为1的时候,圆括号可以省略),“=>”右边定义执行体。由于C#3.0编译器具有TypeInference的能力,参数类型与返回值都将由编译器通过上下文判定,因此与匿名方法不同,Lambda表达式的参数可以不给定参数类型。当所表示的匿名方法没有任何参数时,Lambda表达式也同样可以使用,只需在“=>”左边用一对圆括号表示即可。即:

()=>Console.WriteLine("Hello!");

事实上,“Lambda表达式”这一词比较笼统,事实上“=>”运算符既可以表示Lambda表达式,也可以表示Lambda语句。Lambda语句由代码块组成,形式上很像匿名方法。请看下面的例子:

classProgram { staticvoidMain(string[]args) { //Lambda表达式 Func<int,bool>dele1=n=>n>10; //Lambda语句 Func<int,bool>dele2=(intn)=>{returnn>10;}; Console.WriteLine(dele1(16)); Console.WriteLine(dele1(8)); } }

两种定义方法同样可以正确地输出结果。请注意,当我们希望构建表达式树的时候,情况却完全不同了:

//ok Expression<Func<int,bool>>expr1=n=>n>10; //error:cannotconvertedtoanexpressiontree Expression<Func<int,bool>>expr2=(intn)=>{returnn>10;};

由此可见,在构建表达式树的时候,不能用Lambda语句(带有代码语句的Lambda表达式),而应该使用Lambda表达式。从这里就可以看出匿名方法与Lambda表达式的区别了。

相信本文所述对大家C#程序设计的学习有一定的借鉴价值。

您可能感兴趣的文章:C#中使用Lambda表达式自定义比较器实现两个列表合并实例C#Lambda表达式用途深入理解C#中方法的直接调用、反射调用与Lambda表达式调用对比初步认识C#中的Lambda表达式和匿名方法C#3.0中Lambda表达式详解C#用Lambda和委托实现模板方法C#中如何利用lambda实现委托事件的挂接理解C#中的Lambda表达式C#Lambda知识回顾利用lambda表达式树优化反射详解

标签: 教程 mb

C语言实现2048游戏(ege图形库版)

C语言简易版flappy bird小游戏

上述就是C#学习教程:C#基础之Lambda表达式用法实例教程分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/907235.html

(0)
上一篇 2021年10月24日
下一篇 2021年10月24日

精彩推荐