当前位置:企业应用软件行业动态 → 正文

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

责任编辑:editor005 作者:Pierre-Luc Maheu |来源:企业网D1Net  2016-06-29 12:01:49 本文摘自:INFOQ

在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

关键字:WriteLineMads

本文摘自:INFOQ

x Mads Torgersen介绍C# 7及后续版本新特性 扫一扫
分享本文到朋友圈
当前位置:企业应用软件行业动态 → 正文

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

责任编辑:editor005 作者:Pierre-Luc Maheu |来源:企业网D1Net  2016-06-29 12:01:49 本文摘自:INFOQ

在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

关键字:WriteLineMads

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^