写点什么

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

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

关注

评论

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

想做好分布式架构?这个知识点一定要理解透!

博文视点Broadview

TDengine 在智慧矿山系统中的应用

TDengine

看完微信抢红包算法你就明白,为啥你不是手气最佳

华为云开发者联盟

算法 微信红包 手气最佳 剩余金额随机法 割线法

web前端技术Mongoose详解

编程江湖

java培训-Redis 原理与知识总结分享 不愁面试

@零度

redis JAVA开发

【研讨会报名截止最后一天】全程参会,还有惊喜奖品等你拿!

龙智—DevSecOps解决方案

CI/CD 在线研讨会

Linux常用命令分享:有手就会,但能解决95%以上的问题

优麒麟

Linux 开源 计算机 优麒麟

【Git教程】Git最全使用指南

阿里云云效

git 云计算 阿里云 DevOps Codeup

NetCore性能排查

神农写代码

给工厂做开发,竟然喝着咖啡听“交响”?

阿里云云效

云计算 阿里云 DevOps 研发 研发提效

FabEdge V0.5.0 新特性:支持跨集群服务访问

BoCloud博云

开源 边缘计算 cncf

React Router 6 (React路由) 最详细教程

蒋川

React react rout

TDengine 和 InfluxDB 查询性能对比测试报告

TDengine

数据库 tdengine

vivo 商品中台的可视化微前端实践

vivo互联网技术

可视化 前端特效

在 Rainbond 中一键安装高可用 Nacos 集群

北京好雨科技有限公司

开源 Kubernetes nacos PaaS rainbond

OpenHarmony标准设备应用开发(一)——HelloWorld

OpenHarmony开发者

Hello World ! OpenHarmony 标准设备

提高企业产品交付效率系列(1)—— 企业应用一键安装和升级

北京好雨科技有限公司

Kubernetes PaaS rainbond

安利一个小众但实用的导航网站(推荐收藏)

小炮

导航网站

Echarts 折线图完全配置指南 - 手把手教你设置 Echarts 折线图详细教程

蒋川

Vue eCharts

摩尔定律的现在及未来

科技新消息

Apache Impala架构解析及与Hive、SparkSQL的性能比较

编程江湖

华为云GaussDB专家走进课堂,跟莘莘学子聊聊数据库

华为云开发者联盟

数据库 人才培养 华为云 GaussDB 华为云数据库

Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器

蒋川

Vue video.js

行业分析| 音视频呼叫邀请适用于多领域

anyRTC开发者

音视频 WebRTC 语音通话 视频通话 呼叫邀请

成为 DevOps 工程师需要具备哪些能力?

飞算JavaAI开发助手

CPU的“花招”已耍完?无指令集架构颠覆旧套路

OneFlow

人工智能 机器学习 深度学习 英伟达 芯片

【躲过裁员,成功上岸】发现小公司有不好的苗头,赶紧学习!

小傅哥

面试 小傅哥 中间件 项目

AppCube快速开发问卷调查应用在WeLink发布上线

DS小龙哥

3月月更

Spark的job、stage和task的机制论述

编程江湖

提效24.3%!看OA预算管理系统的低代码开发实践

鲸品堂

低代码开发

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