InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

与 Mads Torgersen 一起提前预览 C# 7

  • 2015-11-11
  • 本文字数:1016 字

    阅读完需:约 3 分钟

Channel 9 的 Seth Juarez 访问了 C#的产品经理 Mads Torgersen,谈及关于下个版本的C#语言的开发,代号C# 7。 除一些其它特性外,还提及三个主要的特性:pattern matching、tuple syntax 和nullable references。

Pattern Matching

Mads 开场讲解由于系统更加分散,结构化数据频繁地通过电线交换。由于这些数据传送并不伴随其操作集合,肯定有方法能更容易地操作这些数据。这就是函数式编程突出的领域,尤其是使用 pattern matching。

复制代码
// Moving a shape using C# 6
void Move (Shape s) {
var r = s as Rectangle;
if (r != null) { // Move the rectangle }
var c as Circle;
if (x != null) { // Move the circle }
}
// Moving a shape using pattern matching
void move (Shape s) {
match (s) {
(Rectangle r) => // Move rectangle
(Circle c) => // Move circle
default => // Handle default or throw
}
}

Tuple syntax

Tuple syntax 使得临时聚合数据成为可能。Mads 讲解道,tuples 可以命名其成员,因此使得辨认 tuple 的各个成员更加容易。

复制代码
// Current syntax
Tuple<int. int=""> Compute()
// Tuple syntax
(int x, int y) Compute()
// Call the method
var (x,y) = Compute()</int.>

接下来更详细的一个例子是状态机的实现。结合 pattern matching,写出以下几行语法简明的代码:

复制代码
match (state, input) {
(State.Init, Event.Go) => { // Process the input }
(State.Init, Event.Stop) => { // Process the input}
(_, _) => { // handle invalid state }
}

Nullable reference type

静态地避免空引用异常以前已经尝试过了,但 Mads 说团队将提供另一种方案。目的是能帮助人们获得更安全的行为而不需强加太多限制或引入破坏性更新。这个想法本质上是提议为引用添加可选类型。然而,在评论中 Mads 假定将引用表达为 nullable 比将其表达为 non-nullable 更加重要。

我觉得 nullable reference type 是特性中最重要的部分。因为这是个全新的(而且不受争议的)语法,就其本身而言它没有破坏任何现有的代码 - 连一个警告也没有。我们使其可行的方法是,当你解除其中一个引用 - 例如“string?” - 我们只会在你没有检查 null 的时候给你一个警告。

必须注意的是这都还在设计流程的早期阶段,而且这些特性和语法还只是有待探索的想法而已。因此 Mads 说:“所有东西已经在台面上了”。更多现有进展的信息可以浏览 GitHub

查看英文原文: Early View of C# 7 with Mads Torgersen

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2015-11-11 18:001731

评论

发布
暂无评论
发现更多内容

Gartner:对中国央行数字货币的创新见解

WorkPlus

质量基础设施一站式云服务平台搭建,NQI一站式服务平台

电微13828808271

终于有人把“元宇宙”说清楚了

CECBC

阿里内网疯狂传阅的“M8级”分布式架构笔记,GitHub刚上线就霸榜

Java 编程 程序员 架构 阿里

模块三作业

panxiaochun

架构实战营

网易云信携手“瑶台”,打造元宇宙商业化实践标杆案例

网易云信

人工智能 虚拟化 虚拟人 元宇宙

云开发CloudBase集成腾讯数字身份管控平台CIAM,快速实现账号管理

腾讯安全

数字化学习分享+一场思维探索工作坊+引导回顾会+公开演讲

研发管理Jojo

数字化转型 敏捷教练 咨询

全捐了,华为将欧拉开源操作系统代码、品牌等相关资产捐赠!!!

WorkPlus

从开始到放弃:某高校电子校友卡开发笔记

CC同学

【得物技术】得物直播秒开体验提升

得物技术

体验 直播 视频 优化 卡顿

互联网大厂考点(阿里+百度+腾讯+字节跳动+美团+京东)

Java高级开发

Java 程序员 架构 面试 大厂

爱奇艺基于SpringCloud的韧性能力建设

爱奇艺技术产品团队

元宇宙让我们实现“办公自由”?想要远程办公,保证员工效率和有效管理才是关键!

极狐GitLab

不愧是GitHub上标星120K的Java手册,全程干货,只讲重点

收到请回复

Java 程序员 后端 面试技巧

Python代码阅读(第57篇):倒序字符串

Felix

Python 编程 string 阅读代码 Python初学者

ZGC在合合信息HBase平台中的实践

合合信息大数据团队

大数据 性能优化 ZGC HBase 合合信息

投资元宇宙,如何开启混合现实开发

龙智—DevSecOps解决方案

游戏开发 元宇宙 混合现实

Prometheus HTTP API 查询(六)Prometheus Server 状态和 TSDB 状态

耳东@Erdong

Prometheus PromQL HTTP API 11月日更

通用排序框架在爱奇艺推荐的应用

爱奇艺技术产品团队

今天面了个腾讯拿 38K 出来的,让我见识到了基础的天花板

Java 程序员 JVM springboot MyBatis标签

WeTest与腾讯安全联合推出小程序质量方案,助力私域流量2.0新增长

WeTest

网易云音乐网络库跨平台化实践

网易云信

数据库 网络库 跨平台化

送给正在入行的小白:最全最有用的网络安全学习路线已经安排上了

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

自定义View:如何实现手动拖动的图片控件

Changing Lin

11月日更

区块链符号理论:符号方案和符号系统

CECBC

CSS页面设计稿构思与实现(四)之自定义字体

Augus

CSS 11月日更

WorkPlus移动门户开启数字化智慧办公新模式

WorkPlus

博睿数据APM适配欧拉开源操作系统,为开发者性能体验保驾护航

博睿数据

2021年10月券商App行情刷新及交易体验评测报告,兴业证券荣登榜首!

博睿数据

【福利】腾讯WeTest专有云,限时开放招募体验官

WeTest

  • 扫码添加小助手
    领取最新资料包
与Mads Torgersen一起提前预览C# 7_.NET_Pierre-Luc Maheu_InfoQ精选文章