在c#7以前咱们得这样express
在c#7中咱们能够这样编程
固然你还能够使用“var”c#
这算一个小更新,其实这个问题存在好久了,应该也很好解决,不知为什么到c#7才开始引入,无论如何之后能够少些一行代码了。异步
须要安装nuget包:System.ValueTupleasync
我的以为这是c#7中带来最cool也是最有用的变化了,咱们从头来看。函数
你们还记得“Tuple”吗?不记得?ok咱们看看它的定义。递归
在来看看使用内存
想不想哭。。讲真,自我编程以来几乎没有用过Tuple,“ItemN”对开发者很是的不友好,我宁愿建立一个struct或class来定义属性器。开发
咱们在c#7中试试(这也算多返回值了)?get
若是你以为return (1,xxx)不够准确,那么你能够
若是你不想result.xxx,那么你还能够“解构”
你还能够这样(不推荐)
还能够在方法内临时建立一个元组
经过这些特性咱们还能够连续声明并赋值变量了
解构类(不推荐)
这一块主要是对“switch”进行了丰富,有点相似c#6的异常过滤器
在以前的版本中switch只能case常量,而如今能够拥有更多的条件了
在c#7中咱们能够这样
这个我的比较少用,简单写个对比代码
这个是个很实用的功能,算是action、和func的丰富,咱们来看一个例子:
递归调用在c#7以前
在c#7中
须要安装nuget包:System.Threading.Tasks.Extensions
严格意义上这个不算一个语法的新特性而是增长了一些类。
在以前咱们想用“async”、“await”就必须使用Task做为返回值(void特殊状况忽略),但Task是一个引用类型(class),这样在很是简单的任务中会形成浪费(内存和gc)
在c#7中微软添加了一个nuget包,增长了一个新的类型“ValueTask”用来解决这个问题。它是值类型的。
妈妈不再怕我多加个0啦~