当前位置:新励学网 > 秒知问答 > 拉姆达函数积分表达式

拉姆达函数积分表达式

发表时间:2024-07-31 17:37:38 来源:网友投稿

让我们先看一个简单的拉姆达表达式:x=>x/2这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值。

通过这个拉姆达表达式,我们可以看到:这个表达式没有任何类型信息,但这并不代表拉姆达表达式是和类型无关的。在实际运用上,编译器会根据表达式的上下文判断上述x的类型及返回值的类型。例如:using System;using System.Linq;public class LambdaTest{ static void Main() { Func<int, double> expr = x => x / 2; int someNumber = 9; Console.WriteLine( "Result: {0}", expr(someNumber) );}}上述代码中,加粗部分为拉姆达表达式。Func<>为 delegate System.Func<T,TResult>上述运行结果为:Result:4根据我们学习的数学知识,9/2应当结果是4.5,为什么上述结果会是4而不是4.5呢?是因为x是整型,x/2的结果也是整型,虽然在上述我们拉姆达表达式中,我们指明结果是double,但x/2这个表达式,由于x是整型,故计算出来的结果已被截掉小数,然后再转换为double,故结果是4,而不是4.5要使结果是4.5,则只需定义上述相关语句为 Func<double,double> expr = x => x / 2 即可。无参数的拉姆达表达式:using System;using System.Linq;public class LambdaTest{static void Main() {int counter = 0;WriteStream( () => counter++ );Console.WriteLine( "Final value of counter: {0}",counter );}static void WriteStream( Func<int> counter ) { for( int i = 0; i < 10; ++i ) {Console.Write( "{0}, ", counter() );}Console.WriteLine();}}

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!