如何在c#项目中创建一个λ表达式和λ表达式树?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1,表达式λ
表达式位于=比;运算符右侧的λ表达式称为“表达式λ”。表达式λ会返回表达式的结果,并采用以下基本形式:
, (input 参数),=祝辞,表达
仅当λ只有一个输入参数时,括号才是可选的;否则括号是必需的。括号内的两个或更多输入参数使用逗号加以分隔:
(x, y),=祝辞,x ==, y
有时,编译器难以或无法推断输入类型。如果出现这种情况,你可以按以下示例中所示方式显式指定类型:
(int x,, string s),=祝辞,s.Length 祝辞,x
使用空括号指定零个输入参数:
(),=祝辞,SomeMethod ()
2,语句λ
当λ表达式中,有多个语句时,写成如下形式:
(input 参数),=祝辞,{语句;}
例如:
delegate void TestDelegate (string s); … TestDelegate myDel =, n =祝辞,{,string s =, n +,,,,, +,“World";, Console.WriteLine(年代);,}; myDel (“Hello");
使用举例:
List, Citys =, new List () ,,,,,{ ,,,,,,,“BeiJing", ,,,,,,,“ShangHai", ,,,,,,,“Tianjin", ,,,,,,,“GuangDong" ,,,,,}; ,,,,,var result1 =, Citys.First (c =祝辞,c.Length 祝辞,7); ,,,,,Console.WriteLine (result1)编写此表达式; ,,,,,var result2 =, Citys.Where (c =祝辞,c.Length 祝辞,7); ,,,,,foreach (var r  result2拷贝) ,,,,,{ ,,,,,,,Console.WriteLine (r); ,,,,,} ,,,,,Console.ReadKey ();
这个是大家熟悉的LINQ语句,如果没学过没关系,这里用的只是很简单的几个方法,相信大家都能看懂。
首先定义一个全市集合,初始化有一些数据,然后调用LINQ的第一方法,查询出来长度大于7的第一个结果,看到了吧,这里用的就是λ表达式,
如果我们自己写,还要写循环遍历集合,然后判断字符串长度是否大于7日起码要写四五行代码,而这里只要一行就够了,而且LINQ也要写很长。
这里用的是最简单的λ表达式,(输入参数)=比;表达式的形式。
下面来看一下,如何自己定义和使用λ表达式,首先写下面一个函数:
public void LambdaFun (string str, Func<字符串,string>,函数) {才能 ,,Console.WriteLine (func (str)); 以前,,}>这里用到了Func
委托,不懂的可以去百度查资料,这个方法什么都没有做,只是调用了委托方法,并将参数传递过去,下面来看一下使用方法: LambdaFun (“BeiJing  2013“,, s =比; ,,,{ ,,,,,if (s.Contains (“2013“)) ,,,,,{ ,,,,,,s =, s.Replace (“2013”,,,“2014“); ,,,,,} ,,,,,return ; ,,,});这里将传入字符串中2013年的替换成为2014年,当然还可以是将其他字符串替换城任何内容,或者是截取,连接等等,完全由我们传入的λ表达式决定,到了这里感觉到λ表达式的强大了吧。
总结下红色那段话的意思:微软告诉你:我们在c# 2.0之前就有委托了,在2.0之后又引入了匿名方法,c# 3.0之后,又引入了λ表达式,他们三者之间的顺序是:委托→匿名变量→λ表达式、微软的一步步升级,带给我们编程上的优美,简洁,可读性强.....在此,不多夸微软,怕他们看到这篇博客后骄傲,怕他们尾巴能翘到天上,不知天高地厚。嘿嘿,说多了!
温故而知新,可以做老师,咱们来温故下委托和匿名表达式。
委托如下:
delegate int 计算器(int x,, int y);,//委托类型 ,,,static void 主要() ,,,{ ,,,,,calculator cal =, new 计算器(添加); ,,,,,int 他=,卡尔(1,1); ,,,,,Console.Write(他); ,,,} , ,,,///,& lt; summary> ,,,///,加法 ,,,///,& lt;/summary> ,,,///,& lt; param name=皒"祝辞& lt;/param> ,,,///,& lt; param name=皔"祝辞& lt;/param> ,,,///,& lt; returns> & lt;/returns> ,,,public static int 添加(int x,, int y) ,,,{ ,,,,,return x +, y; ,,,}如何在c#项目中创建一个λ表达式和λ表达式树