硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

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

关注

评论

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

百度程序员:面试官看过我的博客,所以没敢问我多线程

今晚早点睡

Java 百度 程序员 面试 计算机

了,来了!Nacos 2.0的Spring Boot Starter终于来了

Summer

Java 学习 程序员 架构 springboot

低耦合、高内聚?

escray

学习 极客时间 如何落地业务建模 8月日更

支持高性能计算场景,博云容器云打造智能算力引擎

BoCloud博云

容器 高性能计算

JDK从8升级到11,使用 G1 GC,HBase性能下降20%。JDK 到底干了什么

Summer

Java 学习 程序员 架构 jdk

网络攻防学习笔记 Day104

穿过生命散发芬芳

态势感知 网络攻防 8月日更

前端之算法(三)归并排序

Augus

数据结构与算法 8月日更

架构实战营毕业总结

9527

#架构实战营

网络安全行业真的内卷了吗?

网络安全学海

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

红黑树的理解与 Java 实现

编程菌

Java 编程 程序员 计算机 技术宅

在科技圈流行的冥想,为什么没有全民推广?

脑极体

面对物联网安全隐患高墙,熵核科技如何实现突围

熵核科技

物联网安全

【得物技术】初探 OpenResty

得物技术

nginx 性能 openresty tengine

QDS06 Iperf 测网速

耳东@Erdong

8月日更 qds iperf

让GitHub炸锅的深入理解MySQL实战手册,竟出自阿里云“藏经阁”

Java~~~

Java MySQL 数据库 架构 面试

爆赞!GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传

Java~~~

Java 架构 面试 IDEA 架构师

腾讯三面落马+拒网易、CVTE后,字节四面成功拿下offer

编程菌

Java 编程 程序员 面试 计算机

ReentrantLock 中的 4 个坑!

王磊

Java 并发 lock 8月日更

【前端 · 面试 】JavaScript 之你不一定会的基础题(二)

编程三昧

JavaScript 面试 大前端 事件 8月日更

趁着课余时间学点Python(十二)面向对象的理解(结局)

ベ布小禅

8月日更

与外部系统的读写交互(八)

Databri_AI

flink kafka Cassandra

出自清华大神之手的JVM实战手册,刚上架GitHub点赞就达到85k

Java~~~

Java 架构 面试 JVM 多线程

GitHub上火了这份堪称神级的SpringBoot手册,竟出自滴滴之手

Java~~~

Java 架构 面试 微服务 Spring Boot

360搜索宣布下线“明星人气排行榜”:饭圈文化不是洪水猛兽

石头IT视角

音频技术及行业的发展

声网

音频技术

阿里首本凤凰架构竟要付费,构建大型分布式系统的指南这么宝贵吗

Java~~~

Java 架构 面试 分布式 高并发

腾讯三面:哨兵挂了,Redis还能正常工作吗?

Summer

Java redis 学习 程序员 架构

终于有人把操作系统、网络系统、线程进程、IO模型全部总结出来了

Java~~~

Java 架构 面试 TCP 网络

Web框架Gin | Gin 路由

xcbeyond

Go 语言 路由 gin 8月日更

SQL的执行计划-->explain

卢卡多多

sql 8月日更

干货分享!通过Dapr快速落地DDD,实现高并发

行云创新

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