50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:002608
用户头像

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

关注

评论

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

Sermant重磅更新,1.3.0 release版本发布

华为云开发者联盟

开源 华为云 华为云开发者联盟 sermant

Mac实用软件推荐:FAF简单实用的磁盘文件搜索工具

南屿

磁盘管理 Mac软件 Find Any File 本地文件查找工具

2024年远控软件年度盘点:安全、稳定、功能之选

不叫猫先生

远程办公 远控软件

云虚拟主机空间优化指南:如何充分利用你的云空间?

一只扑棱蛾子

云虚拟主机

隐患上报二维码:扫码上报隐患,可实时跟踪整改进度

草料二维码

大模型时代下的新开发范式探索

百度开发者中心

人工智能 深度学习 大模型

使用PAI-DSW搭建基于LangChain的检索知识库问答机器人

阿里云大数据AI技术

多媒体影音库Emby for Mac使用教程

南屿

emby破解版 emby使用教程 Mac多媒体影音库

聚道云软件连接器助力某家居公司实现付款流程自动化

聚道云软件连接器

案例分享

提升跨境电商独立站用户体验的实用指南!

九凌网络

英特尔宣布收购Silicon Mobility,引领电动汽车能源管理技术发展

E科讯

在CentOS环境下编译GreatSQL RPM包

GreatSQL

Apache Doris 入门 10 问

SelectDB

数据库 大数据 数据仓库 数据分析 apache doris

英特尔酷睿14代处理器系列发布,Arrowlake/LunarLake24年问世

E科讯

SourceTree for Mac(Git客户端工具)v4.1.5中文免登陆版 兼容M1

南屿

Mac软件 Git客户端 SourceTree Mac Sourcetree 激活补丁 Sourcetree 中文版

通义千问Qwen-72B-Chat大模型在PAI平台的微调实践

阿里云大数据AI技术

链上数据分析:解读加密生态的秘密武器

Footprint Analytics

区块链 加密货币

面试官:禁用Cookie后Session还能用吗?

王磊

Java 面试

重新认识Elasticsearch-一体化矢量搜索引擎

京东科技开发者

大模型:产业智能化时代的新引擎

百度开发者中心

人工智能 大模型

支付宝小程序备案流程详解(必看!)

盐焗代码虾

小程序 支付宝 备案

软件测试/测试开发/全日制/测试管理丨Git分布式版本控制系统

测试人

低代码开发平台,程序员的提效工具

互联网工科生

低代码开发平台 应用系统 JNPF

使用 Node.js 实现多线程的最佳实践

Liam

JavaScript node.js 性能优化 多线程 后端开发

MacOS专用防火墙Paragon Firewall可有效监视控制网络接入

南屿

防火墙 mac软件下载 Paragon防火墙

聚道云软件连接器助力某电商企业实现电商业务与财务系统的数据互通

聚道云软件连接器

案例分享

软件测试/测试开发/全日制/测试管理丨Neo4j 图数据库

测试人

软件测试

专为 Mac 用户设计的蓝光播放器:Aiseesoft Blu-ray Player

南屿

苹果软件下载 Mac蓝光播放软件 Aiseesoft Blu-ray Player

软件测试/测试开发/全日制/测试管理丨Python 特点与应用

测试人

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