GMTC北京站9折购票最后一周,2022年大前端方向又有哪些技术热点? 了解详情
写点什么

C# 9 Lambda 小幅升级

  • 2020 年 8 月 06 日
  • 本文字数:758 字

    阅读完需:约 2 分钟

C# 9 Lambda小幅升级

C# 9 的 Lambdas 将会有一个小的升级,包含两个新特性。这两个新特性都不会改变代码的编写方式,但都体现了开发人员的意图。


Lambda丢弃参数允许开发人员显式指定某些参数是不需要的,这样可以防止编译器对未使用的参数发出错误警告。事件处理器就可能出现这种情况,因为事件处理器有可能不需要知道发送方是谁,有不需要知道对象参数是什么。


button1.Click += (s, e) => ShowDialog(); 
复制代码


通过替换参数,很容易就知道变量未被使用。


button1.Click += (_, _) => ShowDialog(); 
复制代码


如果有必要,可以使用类型。


var handler = (object _, EventArgs _) => ShowDialog(); 
复制代码


静态匿名函数可作为无法捕捉本地变量(包括参数)的 Lambda 或匿名函数。下面这个示例来自 最初的提议


int y = 10; someMethod(x => x + y); // 捕捉 'y', 导致不必要的资源分配. 
复制代码


在 C#中,引用本地变量的匿名函数需要分配一个临时对象。本地参数会被移出方法,并移入到对象中,在当前执行的函数结束后,它将继续存在。这是必要的,因为匿名函数存在的时间可能比创建它的函数要长。


通过添加 static 关键字来表明匿名函数阻止这种内存分配。


int y = 10; someMethod(static x => x + y); // 错误! 
复制代码


为了修复这个错误,需要将变量 y 改成常量或静态字段。


const int y = 10; someMethod(static x => x + y); // 好了 :-) 
复制代码


以下是该特性的主要规则:


  • 静态匿名函数无法从包含作用域捕获到状态。因此,局部变量、参数和包含作用域内的参数在静态匿名函数中是不可用的。

  • 静态匿名函数无法通过隐式或显式 this 或 base 引用来引用实例成员。

  • 静态匿名函数可以引用包含作用域内的静态成员。

  • 静态匿名函数可以引用包含作用域内的常量定义。

  • 在静态匿名函数中的 nameof()可以引用包含作用域内的局部变量、参数,或者 this 或 base 函数。


原文链接


C# 9: Minor Improvements for Lambdas


2020 年 8 月 06 日 16:373780

评论 1 条评论

发布
用户头像
现在C#还能用在哪方面呢?
2020 年 08 月 07 日 14:34
回复
没有更多了
发现更多内容

充分释放数据价值:安全、可信6到飞起

华为云开发者社区

区块链 数据共享 华为云 可信安全计算 数据价值

中国四大银行正在大规模内测数字货币APP|可凭手机号完成转账

CECBC

数字货币 DCEP 中国人民银行

华为云的研究成果又双叒叕被MICCAI收录了!

华为云开发者社区

学习 AI 计算机视觉 医疗 华为云

详解GaussDB(for MySQL)服务:复制策略与可用性分析

华为云开发者社区

数据 路径 可用性 华为云 GaussDB

JVM系列之:从汇编角度分析NullCheck

程序那些事

Java JVM JIT

NIO的组成有哪些——奈学

古月木易

nio

《深度工作》学习笔记(5)

石云升

读书笔记 专注 深度工作

如何保存我们的资产

不在调上

浙江上线市场监管区块链电子取证平台,武汉出台“区块链八条”,

CECBC

区块链 行业资讯 产业落地

NIO的组成有哪些——奈学

奈学教育

nio

EasyDL的数据集、模型与代码的版本管理:灵活管理效率提升

百度大脑

人工智能 模型训练 百度大脑

原创 | 使用JPA实现DDD持久化- O:对象的世界(2/3)

编程道与术

Java hibernate DDD JDBC jpa

未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布

华为云开发者社区

Kubernetes 容器 华为云 Volcano 元原生

《RabbitMQ》如何保证消息不被重复消费

Java旅途

RabbitMQ 消息队列

Week 09 命题作业

Jeremy

换一种方式构建镜像

北漂码农有话说

week9 学习总结

任小龙

Week09作业

熊威

当百度遇上新基建:开放是基本原则 做智能时代的赋能者

百度大脑

人工智能 百度 AI 新基建 百度大脑

Week 09 学习总结

Jeremy

女博士年薪156万入职华为!网友:实力演绎美貌与智慧并存

程序员生活志

华为 少年天才

百度大脑人脸离线识别SDK升级盘点,Linux ARM版本上线

百度大脑

人工智能 人脸识别 百度大脑 sdk

微服务架构下的核心话题 (二):微服务架构的设计原则和核心话题

xcbeyond

架构 微服务 设计原则

架构师训练营第九周

WW

产品经理【三句半】,说清你的【酸甜苦辣】

Java_若依框架教程

产品经理 产品设计

一文教会你嵌入式网络模块的联网操作

良知犹存

物联网 网络 嵌入式

对于容器技术的看法

倾心煎蛋

获得高手的精英思维,从写作开始。

叶小鍵

高手 万维钢 得到精英日课

打造高转化率网站不得不遵循的3条规范

姜奋斗

网站架构 网站 网站搭建 高转化率 转化

日入斗金,稳赚不赔?小心泛滥网络的兼职刷单让你钱尽财空

360安全卫士

「查缺补漏」巩固你的Redis知识体系

Kerwin

Java redis

WAVE SUMMIT 2022 深度学习开发者峰会

WAVE SUMMIT 2022 深度学习开发者峰会

C# 9 Lambda小幅升级_语言 & 开发_Jonathan Allen_InfoQ精选文章