look look C#7

vs2017也rc好几个版本了,本想跟进看看c#7加入了什么内容,去搜索c#7,确实找到了不少文章,无奈很多特性ide根本不让编译啊。。。所以今天主要列出已经确定了的c#7特性(一般来说rc后也不会加入新的特性了,其它的预览特性我们可能等c#8哈哈)

out变量

在c#7之前我们得这样

image

在c#7中我们可以这样

image

当然你还可以使用“var”

image

这算一个小更新,其实这个问题存在很久了,应该也很好解决,不知为何到c#7才开始引入,不管如何以后可以少些一行代码了。

元组(Tuples)

需要安装nuget包:System.ValueTuple

个人觉得这是c#7中带来最cool也是最有用的变化了,我们从头来看。

大家还记得“Tuple”吗?不记得?ok我们看看它的定义。

image

image

在来看看使用

image

image

想不想哭。。讲真,自我编程以来几乎没有用过Tuple,“ItemN”对开发者非常的不友好,我宁愿创建一个struct或class来定义属性器。

我们在c#7中试试(这也算多返回值了)?

image

image

如果你觉得return (1,xxx)不够准确,那么你可以

image

如果你不想result.xxx,那么你还可以“解构”

image

你还可以这样(不推荐)

image

image

还可以在方法内临时创建一个元组

image

通过这些特性我们还可以连续声明并赋值变量了

image

解构类(不推荐)

image

模式匹配(Pattern matching)

这一块主要是对“switch”进行了丰富,有点类似c#6的异常过滤器

在之前的版本中switch只能case常量,而现在可以拥有更多的条件了

在c#7中我们可以这样

image

本地引用和返回(Ref locals and returns)

这个个人比较少用,简单写个对比代码

image

本地函数(Local functions)

这个是个很实用的功能,算是action、和func的丰富,我们来看一个例子:

递归调用在c#7之前

image

在c#7中

image

表达式可用于更多成员(More expression-bodied members)

image

表达式抛出异常(Throw expressions)

image

值类型的异步返回(Generalized async return types)

需要安装nuget包:System.Threading.Tasks.Extensions

严格意义上这个不算一个语法的新特性而是增加了一些类。

在之前我们想用“async”、“await”就必须使用Task作为返回值(void特殊情况忽略),但Task是一个引用类型(class),这样在非常简单的任务中会造成浪费(内存和gc)

在c#7中微软添加了一个nuget包,增加了一个新的类型“ValueTask”用来解决这个问题。它是值类型的。

image

数值语法改进(Numeric literal syntax improvements)

妈妈再也不怕我多加个0啦~

image

写在最后

写这个的时候还是蛮头疼的,因为一下子想不起来这个特性的适用场景,还是需要具体实践之后才能体会新的语法是否有用。

值得注意的是一些新的语法既然跟nuget包扯上了关系,这个我们下次再看细看,主要是roslyn的功劳。

参考资料:https://docs.microsoft.com/zh-cn/dotnet/articles/csharp/csharp-7

CC是C是一C是一种C是一种计C是一种计算C是一种计算机C是一种计算机编C是一种计算机编程C是一种计算机编程语C是一种计算机编程语言C是一种计算机编程语言,C是一种计算机编程语言,由C是一种计算机编程语言,由DC是一种计算机编程语言,由DennisC是一种计算机编程语言,由Dennis RitchC是一种计算机编程语言,由Dennis RitchieC是一种计算机编程语言,由Dennis Ritchie在C是一种计算机编程语言,由Dennis Ritchie在197C是一种计算机编程语言,由Dennis Ritchie在1972C是一种计算机编程语言,由Dennis Ritchie在1972年C是一种计算机编程语言,由Dennis Ritchie在1972年创建C是一种计算机编程语言,由Dennis Ritchie在1972年创建。C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。CC是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的CC是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、JavaC是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、PythonC是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他编C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他编程C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他编程语C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他编程语言C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他编程语言的C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他编程语言的基C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他编程语言的基础C是一种计算机编程语言,由Dennis Ritchie在1972年创建。它具有高效性、可移植性和灵活性,被广泛地应用于系统软件和应用软件的开发。C语言也是后继的C++、Java、Python等其他编程语言的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值