拉姆达表达式(Lambda Expressions)[通俗易懂]

拉姆达表达式(Lambda Expressions)[通俗易懂]让我们先看一个简单的拉姆达表达式:x=>x/2这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值。通过这个拉姆达表达式,我们可以看到: 这个表达式没有任何类型信息,但这并不代表拉姆达表达式是和类型无关的。在实际运用上,编译器会根据表达式的上下文判断上述x的类型及返回值的类型。例如: usingSystem;usingS

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

让我们先看一个简单的拉姆达表达式:

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();
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191995.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python正则表达式菜鸟教程_正则表达式空格怎么表示

    python正则表达式菜鸟教程_正则表达式空格怎么表示正则表达式的作用:用来匹配字符串一、字符串方法字符串提供的方法是完全匹配,不能进行模糊匹配s=’helloworld’#字符串提供的方法是完全匹配,不能进行模糊匹配print(s.find(‘ll’))#2查找ll的位置,输出的是第一个l的位置ret=s.replace(‘ll’,’xx’)#替换,用ll替换为xxprint(ret)#hexxowo…

    2022年9月27日
    5
  • 服务器地址和端口号是什么怎么看_常见服务对应的端口号

    服务器地址和端口号是什么怎么看_常见服务对应的端口号常用端口号与对应的服务以及端口关闭端口简介:本文介绍端口的概念,分类,以及如何关闭/开启一个端口21端口:21端口主要用于FTP(FileTransferProtocol,文件传输协议)服务。

    2022年8月4日
    11
  • NeHe OpenGL第三十三课:TGA文件[通俗易懂]

    NeHeOpenGL第三十三课:TGA文件加载压缩和未压缩的TGA文件:在这一课里,你将学会如何加载压缩和为压缩的TGA文件,由于它使用RLE压缩,所以非常的简单,你能很快地熟悉它的。 我见过很多人在游戏开发论坛或其它地方询问关于TGA读取的问题。接下来的程序及注释将会向你展示如何读取未压缩的TGA文件和RLE压缩的文件。这个详细的教程适合于OpenGL,但是我计划改进它…

    2022年4月16日
    50
  • pychrm激活码【注册码】

    pychrm激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    54
  • 十大漏洞之逻辑漏洞

    十大漏洞之逻辑漏洞在十大漏洞中,逻辑漏洞被称为“不安全的对象引用,和功能级访问控制缺失”。现如今,越权和逻辑漏洞占用比例比较高,包括任意查询用户信息,重置任意用户密码,验证码爆破等。逻辑漏洞:常见的逻辑漏洞:交易支付,密码修改,密码找回,越权修改,越权查询,,突破限制等各种逻辑漏洞不安全的对象引用指的是平行权限的访问控制缺失A,B同为普通用户,他们之间彼此之间的个人资料应该相互保密的,A的资…

    2022年5月29日
    42
  • FreeCMS视频教程 远程发布静态页面

    FreeCMS视频教程 远程发布静态页面

    2022年2月21日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号