• 欢迎访问我爱CSharp学习网,这里有最新最全的C#书籍,C#视频。
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏我爱C#学习网吧
  • 推荐使用最新版Chrome浏览器和火狐浏览器访问本网站

C#7的9个新语法

C#杂烩 52csharp 208次浏览 0个评论 扫描二维码

(点击上方蓝字,可快速关注我们)


来源:KAnts

cnblogs.com/ants/p/6382264.html


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


一、out变量


在c#7之前我们得这样


C#7的9个新语法


在c#7中我们可以这样


C#7的9个新语法


当然你还可以使用“var”


C#7的9个新语法


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


二、元组(Tuples)


需要安装nuget包:System.ValueTuple


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


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


C#7的9个新语法


C#7的9个新语法


在来看看使用


C#7的9个新语法


C#7的9个新语法


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


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


C#7的9个新语法


C#7的9个新语法


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


C#7的9个新语法


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


C#7的9个新语法


你还可以这样(不推荐)


C#7的9个新语法


C#7的9个新语法


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


C#7的9个新语法


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


C#7的9个新语法


解构类(不推荐)


C#7的9个新语法


三、模式匹配(Pattern matching)


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

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

在c#7中我们可以这样


C#7的9个新语法


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


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


C#7的9个新语法


五、本地函数(Local functions)


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

递归调用在c#7之前


C#7的9个新语法


在c#7中


C#7的9个新语法


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


C#7的9个新语法


七、表达式抛出异常(Throw expressions)


C#7的9个新语法


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


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


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


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


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


C#7的9个新语法


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


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


C#7的9个新语法


写在最后


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


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


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


 

C#7的9个新语法


我爱CSharp学习网 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#7的9个新语法
喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址