zoukankan      html  css  js  c++  java
  • C#7的新语法

    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

    原文:http://www.cnblogs.com/ants/p/6382264.html

  • 相关阅读:
    VSTS知识整理 荣
    扯淡 荣
    我安装了SQL Server2005后,为什么在IIS的默认站点下面并没有发现Reports? 荣
    ERROR 32000 错误 荣
    vs2012程序打包部署下载InstallShield2015LimitedEdition的下载及安装打包整套教程
    微信小程序之保持登录状态即session不改变
    微信小程序如何调用API实现数据请求wx.request()
    改版kingsmotor.cn用到的参考网站
    第一个css+div网页(太弱智了)
    超级搞笑的笑话
  • 原文地址:https://www.cnblogs.com/yanglang/p/6687741.html
Copyright © 2011-2022 走看看