大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
让我们先看一个简单的拉姆达表达式:
x=>x/2
这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值。
通过这个拉姆达表达式,我们可以看到:
这个表达式没有任何类型信息,但这并不代表拉姆达表达式是和类型无关的。在实际运用上,编译器会根据表达式的上下文判断上述x的类型及返回值的类型。例如:
using System;
using System.Linq;
public class LambdaTest
{
}
上述代码中,加粗部分为拉姆达表达式。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 ) {
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191995.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...