QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Mads Torgersen 介绍 C# 7 及后续版本新特性

  • 2016-06-28
  • 本文字数:1188 字

    阅读完需:约 4 分钟

QCon 纽约 2016 大会上,C#项目经理 Mads Torgersen 介绍了即将到来的 C# 7。他还简单地阐述了 C#的演化过程,并展示了部分正在开发的未来版本特性。

近年来,云和分布式系统的出现使开发人员面临着新的挑战。开发人员需要进步,语言也要随之进步。像 C#这样一门多用途语言,其演化需要平衡不同的方面:

  • 改善 vs 保持简单
  • 改善现有开发 vs 吸引新用户
  • 采用新范式 vs 忠于 C#的 OOP 精神

近年来,.Net 整体上也经历了重大的变化:

  • 支持 Windows、Mac OS 和 Linux(.Net Core)
  • 部署系统
  • 编译成本地代码(.NET Native)
  • 开源编译器和公共 Roslyn API
  • 多编辑器选择(由 OmniSharp 和 Roslyn 促成)
  • 开源框架、编辑器和工具

C# 7

C# 7 将随 Visual Studio 15 交付,后者目前是以预览版的形式提供。为了加快新语言特性的推出速度,他们正在讨论点版本发布。这样,语言特性会包含在小版本中。此举的目的在于,一旦新特性开发完成,早期采用者就可以选择激活各种新特性。

C# 7 将包含元组。从一个方法返回多个值变得更简单:

复制代码
static (int sum, int count) Method()
{
return (0, 0)
}
// 调用方法并使用结果
var result = Method();
Console.WriteLine($"Sum:{result.sum}.Count: {result.count}.");

元组还可以用在泛型类型中。元组是值类型,也就是说,它们是在栈上分配内存,而不是堆上。这可能会提高性能,比如减少关键代码路径中的垃圾收集开销。

复制代码
// 异步方法返回元组
static async Task<(int sum, int count)> Method()
// Dictionary 使用元组作为键
var dict = new Dictionary<(string first, string last), person>();

部分模式匹配特性的删减招致了模式匹配特性将整体删除的传言。C# 7 还会包含模式匹配特性,未来版本还会进行增强。

C# 7 后续版本特性

有多项特性目前正在开发之中,将会包含在 C#的下一个版本中。为了提供一种简单的方式处理某些场景,更多的模式匹配语义也正在探索之中:

复制代码
// 使用 C# 7 模式匹配
if (O is Point p && p.X == 5) { WriteLine($"Y: {p.Y}")}
// 使用未来版本的替代语法处理相同的场景
if (o is Point X {var x, Y: var y} && x == 5) { WriteLine($"Y: {y}")}
if (o is Point { X : 5, Y: var y}) { WriteLine($"Y: {y}")}
if (o is Point(5, var y)) { WriteLine($"Y: {y}")}

可空引用类型的实现正在进行当中。当前的思路是,当编译器检测到 null 值的不合理使用时就发出警告:

复制代码
string? n;
string s;
n = null; // 好的,可空
s = null; // 警告,不应该为空
s = n; // 警告
WriteLine(s.Length); // 一定不为空
WriteLine(n.Length) // 警告!可能为空

不可变值类型 Record 是另一项正在开发中的特性。不可变让并发环境数据分享更安全,让程序更容易推断。Record 类型提供了一种在 C#中使用不可变性的简洁方式。Record 有默认值语义,就是说提供了开箱即用的 getter、GetHashCode、equality 成员实现。

查看英文原文: C# 7 and Beyond with Mads Torgersen

2016-06-28 19:002304
用户头像

发布了 1008 篇内容, 共 407.5 次阅读, 收获喜欢 345 次。

关注

评论

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

Chrome操作指南——入门篇(十一)network

Augus

Chrome开发者工具 9月月更

牛客网趋势最热Java八股文,速度赶紧马上打包带走!

Java-fenn

Java 编程 程序员 java面试 Java面试题

企业选择局域网即时通讯软件的必要性是什么?

BeeWorks

2022年震荡与加速中前行的新消费

易观分析

疫情 消费

WorkPlus移动办公系统:打造安全专属、统一业务与运营的企业门户

BeeWorks

疫情时代下,线上协同办公成时下热点

Baklib

远程办公 企业 协同办公 在线设计

J神出品!让 Compose 从此摆脱 ViewModel

Java-fenn

Java java;

安利一个比Gitbook更好用的国内帮助文档制作平台

Baklib

电商黄牛,你被小红书盯上了

小红书技术REDtech

算法 电商风控 黄牛治理

通过 Kasten K10 by Veeam 与 SUSE Rancher 实现云原生应用灾备迁移

Java-fenn

Java

Github最新Java面试1658核心讲,助力百人入大厂!

Java-fenn

Java 编程 程序员 java面试 Java面试题

2021年中国自然语言处理软件及服务市场规模超200亿,市场保持高速增长,竞争格局远未稳定

易观分析

自然语言处理 市场

聚焦金融行业未来,博睿数据亮相第五届中国银行CIO峰会

博睿数据

AIOPS 金融 银行 博睿数据 ONE平台

测试驱动开发 (TDD) 在线练功房 | 12 月 17 日开课

ShineScrum

【9.16-9.23】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件

葡萄城技术团队

MyBatis批量插入几千条数据慎用foreach

Java-fenn

Java

当你 git push 时,极狐GitLab上发生了什么?

极狐GitLab

DevOps gitlab SSH gitops 极狐GitLab

日系“怎样”系列新版升级,一本书讲透程序运行的方方面面

图灵社区

Python 程序员 C语言 计算机

Chrome操作指南——入门篇(十二)color picker(颜色选择器)

Augus

Chrome开发者工具 9月月更

金九银十必备!这份java面经让你轻松拿下45kOffer

Java-fenn

Java 程序员 面试 java面试 Java面试题

TiDB Hackathon 2022丨总奖金池超 35 万!邀你唤醒代码世界的更多可能性!

PingCAP

#TiDB

数据湖系列之二 | 打造无限扩展的云存储系统,元数据存储底座的设计和实践

Baidu AICLOUD

数据湖 元数据

我所知道的webpack5那些不太一样的改变

Java-fenn

Java

华为云GaussDB——打造金融行业坚实数据底座,共创数字金融新未来

Java-fenn

Java

SelectDB 创始人兼 CEO 连林江荣获 OSCAR 开源产业大会「尖峰开源人物 」奖项

SelectDB

数据库 大数据 数据仓库 企业号九月金秋榜 尖峰开源

最全Java面试攻略,吃透25个技术栈Offer拿到手软

Java-fenn

Java 编程 程序员 java面试 Java面试题

《软件开发的201个原则》思考:6. 低可靠性比低效率更糟糕

非晓为骁

个人成长 软件工程能力 高质量

优化帮助中心需要做到以下几点

Baklib

产品 帮助中心 在线设计

Kong重构了其事件通知机制

八苦-瞿昙

Event Gateway API Gateway

CAT 认证敏捷团队教练工作坊 (Coaching Agile Teams) | 2023年1月 7 日开课

ShineScrum

敏捷教练 专业教练

Mads Torgersen介绍C# 7及后续版本新特性_.NET_Pierre-Luc Maheu_InfoQ精选文章