设为首页 加入收藏

TOP

C# 7.1、7.2特性追踪
2017-11-13 14:55:28 】 浏览:230
Tags:7.1 7.2 特性 追踪

C# 7.1、7.2特性追踪


作为Visual Studio 15.3的一部分,微软发布了自.NET 1.1以来C#的第一个单点版本。C# 7.1提供了三个新特性,其中有两个是成功有效的。


C# 7.1/7.2:default字面量


default字面量旨在减少一些样板代码。下面是一个常见的例子:


这多少有点啰嗦,因此,模仿Visual Basic的Nothing关键字,上述代码可以写成下面这样:


这行代码可以按照预期方式运行。但是,当使用一个可空的值类型时,问题就来了。


这行代码应该把limit参数置为空,但在C# 7.1中,它实际返回0。


这个问题的修复计划在C# 7.2中进行,该版本会随Visual Studio 15.5一起发布。


C# 7.1:元组名称推断
自从引入了匿名类型,C#就可以隐式命名属性。例如,在下面这行代码中,对象y会拥有名为AB的属性。


在C# 7.1中,值元组也具有这个特性。


要了解更多有关元组名称推断的信息,请看下我们之前的报道


C# 7.1:Async Main


这里没有多少可说的。Main函数现在可以异步执行,这减少了之前需要编写的一些样板代码。


C# 7.2:条件Ref


C#的条件操作符通常被称为“三元运算符”,因为这是这门语言中的唯一一个。C# 7.2将会提供第二个三元操作符,名为条件Ref操作符


这个小特性让开发人员可以在条件中使用ref表达式。下面是提案中的一个例子:


注意,除了在靠近两种可能结果的地方需要使用ref关键字外,在包含整个表达式的括号外也需要使用ref关键字。


C# 7.2:起始分隔符


该特性扩展了在数值字面量中使用下划线的能力。下面的示例摘自提案:


C# 7.2:非尾部命名参数


C#中的命名参数服务于两种目的:


该特性处理第二种情况。例如:


除非开发人员记住了函数签名,否则很难一眼就看出了truefalse对应什么。过去,开发人员可以写成下面这样:


但是,如果对maxRecords参数没有疑问却还需要指定似乎就有点奇怪。在非尾部命名参数提案中,开发人员可以根据需要指定参数。


编者注:当清晰度成为问题时,Enum仍然好于Boolean


C# 7.2:Private Protected


C#有5个访问级别:privateinternalprotectedprotectedinternalpublic。但是,CLR还有第六个访问级别,名为FamANDAssem,“允许程序集中的子类型访问”。


冷知识:在CLR中,protected称为family,而internal称为assembly


借助新关键字“private protected”,开发人员可以使用CLR的FamANDAssem标识了。Private Protected提案说明了这样做的重要性:


C# 7.2:只读引用


我们之前报道过只读引用,所以这里没什么新东西要介绍。本质上讲,只读引用只是为了说明开发人员希望通过引用传递结构从而获得性能收益,而不是真正改变值的能力。


目前,只读引用提案尚处于原型阶段,还没有实现。


ref-like类型编译时安全强化[7.2提案]


放弃的特性


以下特性没有被标记为7.2提案的一部分。虽然这不是说一定不会标记,但可能不会很快发生。


查看英文原文Catching up with C# 7.1 and C# 7.2


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spring的IOC模拟实现 下一篇Java网络编程之UDP和TCP实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目