Lambda表达式和扩展方法.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lambda表达式和扩展方法

10.5 Lambda表达式 10.5.1 Lambda表达式介绍 Lambda表达式是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。Lambda表达式由输入参数(如果存在)、Larnbda运算符(=)和表达式(或语句块)构成。Lambda表达式的基本形式如下。 (input parameters) = expression 其中,input parameters表示输入参数,expression表示表达式。输入参数(如果存在)位于Lambda运算符的左边,表达式或语句块位于Lambda运算符的右边,Lambda运算符(=),读作“goes to。下面的实例代码使用Lambda表达式计算两个数的积。 x = x * x; ??Lambda 表达式的输入参数 输入参数的数量可以为空,1个或多个。当输入参数为空时,Lambda表达式左边的括号不能省略。下面的代码使用Lambda 表达式显示字符串“这是一个Lambda 表达式。”,该Lambda 表达式的参数为空。 () = Console.WriteLine(这是一个Lambda 表达式。); 如果Lambda 表达式的输入参数的数量为1时,输入参数的括号可以省略。下面的代码使用Lambda 表达式计算参数的积。其中,第一个Lambda表达式输入参数没有使用括号,第二个Lambda表达式输入参数使用了括号,它们在功能上等价。 x = x * x; (x) = x * x; 如果Lambda表达式的输入参数的数量大于l时,输入参数的括号是必须的,且参数之间使用逗号(,)分隔。下面的实例代码使用Lambda表达式计算两个参数的积。 (x, y) = x * y; 10.5.2 Lambda语句 Lambda表达式的右边不但可以是一个表达式,而且还可以是语句块。Lambda 语句与 Lambda 表达式类似,只是语句括在大括号中 其中,input parameters 表示输入参数,statement表示语句块,一般由多个语句或表达式组成。下面的实例代码使用Lambda表达式计算两个数的积。 (x, y) = { int result = x * y; Console.WriteLine(result.ToString()); }; 注意:Lambda 表达式的语句块必须放置在“{”和“}”之间。 10.5.3 带有标准查询运算符的Lambda Lambda表达式最常见的用法就是查询。Func(Of(T, TResult)) 委托使用类型参数来定义输入参数的数量和类型,以及委托的返回类型。Func 委托对于封装应用于一组源数据中每个元素的用户定义表达式非常有用参数类型为 ExpressionFunc 时,您也可以提供 Lambda 表达式 { int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; ? int oddNumbers = numbers.Count(n = n % 2 == 1); Console.WriteLine(数组numbers中的奇数个数:+oddNumbers); } 图 10-11 Lambda 表达式的查询结果 ??Lambda 表达式的转换 由于Lambda表达式本身就是一个匿名函数,因此,每一个Lambda 表达式都可以转换为其相应的函数。譬如,Lamebda表达式“x=x*x;可以转换为下面的实例代码: delegate int mul(int i); mul myDelegate = x = x * x; int result = myDelegate(10); //result = 100 10.6 扩展方法 扩展方法使您能够向现有类型添加方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 { public?static?int WordCount(this燬tring str) { return str.Split(.).Length; } public爏tatic爏tring ReturnStr(this爏tring str) { return str; } } class燩rogram { static爒oid Main(string[] args) { string s = ; Console.WriteLine(字符串S分

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档