24小时在线 - 古典小说 - 文学小说 - 关于我们
您的当前位置:首页 > .NET > C# >

C#七的9个新语法

来源:比特技术 编辑:比特技术网 时间:2018-05-18点击:
导读:C#7的9个新语法一、out变量 ? 在c#7之前我们得这样 ? ? 在c#7中我们可以这样 ? ?
C#7的9个新语法

一、out变量

 

在c#7之前我们得这样

 

 

在c#7中我们可以这样

 

 

当然你还可以使用“var”

 

 

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

 

二、元组(Tuples)

 

需要安装nuget包:System.ValueTuple

 

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

 

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

 

 

 

在来看看使用

 

 

 

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

 

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

 

 

 

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

 

 

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

 

 

你还可以这样(不推荐)

 

 

 

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

 

 

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

 

 

解构类(不推荐)

 

 

三、模式匹配(Pattern matching)

 

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

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

在c#7中我们可以这样

 

 

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

 

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

 

 

五、本地函数(Local functions)

 

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

递归调用在c#7之前

 

 

在c#7中

 

 

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

 

 

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

 

 

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

 

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

 

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

 

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

 

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

 

 

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

 

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

 

2楼 乁卬杨
图挂了
Re: fiftha
@乁卬杨 ,图没挂
1楼 T林飘叶
66666666666
来源:比特技术在线(www.byte.online),欢迎分享本文,转载请保留出处!
http://www.byte.online/a/_NET/C_/2018/485823.html
责任编辑:比特技术网

    打赏

    取消

    感谢您的支持,我会继续努力的!

    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    网友评论:

    Copyright © www.byte.online 比特技术在线 版权所有 粤ICP备15038486号-3
    本站所有资料来源于网络,由个人收集整理,仅限于个人学习和研究,如果侵犯您的权益请联系我们删除!
    Top