如何在c#项目中创建一个λ表达式和λ表达式树

  介绍

如何在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 ();

如何在c#项目中创建一个λ表达式和λ表达式树

这个是大家熟悉的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#项目中创建一个λ表达式和λ表达式树