博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 8.0先睹为快
阅读量:6224 次
发布时间:2019-06-21

本文共 1672 字,大约阅读时间需要 5 分钟。

在MSDN Channel 9中,Mads Torgersen先行通过视频。

\\
可空的引用类型(Nullable Reference Types)
\\

InfoQ曾对做了报道,该理念可概括地表述为,引用类型将不再默认可空。因此,开发人员必须使用定义可空值类型的同样语法“Type?”,显式地标记一个引用类型为可空。

\\

如果将一个空值赋值给一个非可空的引用类型,那么将会给出一个编译器警告。与之相类似,从可空类型中读取也会给出编译器警告,除非显式地提前检查了被质疑的变量是否为空值。因此从理论上讲,开发人员需要做的唯一更改就是在代码的适当位置标上问号。

\\

在InfoQ的报道之后,该特性新加了一个语法。该语法针对开发人员明知一个可空变量x并非实际为空值却无法证明给编译器的情况。在上述情况下,开发人员现在可以定义x!.Method(),消除编译器对于潜在空值引用异常的告警。

\\

异步流(Async Streams),即foreach async

\\

异步流是IEumerable的异步等价类。正如InfoQ在前期所报道的,C#团队自2015以来就一直在努力实现。在经历了很多争议后,其语法被定为:

\\
\foreach await (string s in asyncStream)
\\

开发人员将使用如下的函数签名定义一个异步迭代器:

\\
\async IAsyncEnumerable MethodName()
\\

就像使用一个正常的IEnumerable方法一样,开发人员可以使用“yield return”以懒方式(Lazy)构建对象流。

\\

相比于源自响应式扩展(Reactive Extensions)的IObservable,使用这一方法的优点在于让消费者控制流速,这被称为“Pull模式”。与之相对,IObservable是一种“Push模式”,这意味着生产者可以使用高于消费者所能处理的流速让流涌向消费者。

\\

缺省接口实现(Default Interface Implementations)

\\

缺省接口实现在本质上是一种有限形式的多重继承。它允许抽象接口像抽象类一样,对方法进行完全的定义,只是抽象接口依然不能定义构造函数和字段。

\\

需注意,开发人员可以通过使用在接口上模拟字段。

\\

默认接口实现的主要好处是,开发人员可以在不破坏向后兼容的条件下,将一个新方法添加到一个已有的接口中。但是这并非是有保证的,因为默认接口只是在可以设计出适合的默认方法时才能工作。

\\

这是一个颇具争议的特性。在此我们不会复述那些支持和反对的争论内容,对这些争论的总结,可以参见InfoQ先前对于的一篇文章。

\\

扩展(Extension)

\\

开发人员可以编写扩展方法,但是不能扩展属性,这是长期以来对C#一直存在的一个抱怨。事实上,如果使用当前的模式,甚至是不能定义一个扩展属性或事件的。此外,在很多开发人员看来,在静态类中放置扩展方法是“很诡异的”。

\\

新的设计中新给出了一种称为“扩展”(Extension)的顶层语言构件。例如,如果开发人员想要为自定义的Customer类创建一个扩展方法和属性,可编写如下代码:

\\
\extension CustomerExt extends Customer {\    //定义方法和属性的代码。\}\
\\

就接口而言,是不能在扩展中定义实例字段的,但是可以使用ConditionalWeakTable实现模拟。定义静态字段也是允许的。

\\

除了对属性、事件和操作符重载的扩展,C#团队甚至考虑允许扩展构造函数。扩展构造函数非常适用于工厂模式(Factory)和对象池场景。

\\
扩展接口(Extension Interfaces)
\\

C#团队还考虑了扩展接口,即在已有类中添加新接口的能力。但是扩展接口将不会成为C# 8中的特性,因为它需要更改底层的运行时。

\\

如想更多地了解C#的未来发展,请查看。

\\

查看英文原文:

转载地址:http://wwfna.baihongyu.com/

你可能感兴趣的文章
2017阿里双11交易创建峰值 32.5 万笔/秒!
查看>>
【译】统一样式语言
查看>>
十分钟教程:用Keras实现seq2seq学习
查看>>
Netflix: 使用 React 构建高性能的电视用户界面
查看>>
在网站 Logo 上右击时提示下载网站的 Logo 素材下载
查看>>
移动端设计最佳实践
查看>>
运营商如何从NaaS中获益
查看>>
大数据计数原理1+0=1这你都不会算(一)
查看>>
艾普联手OPENSTACK 打造公众云
查看>>
从线上卖到线下,秘籍在这里|千牛头条双11直播
查看>>
李飞飞:为什么计算机视觉对机器人如此重要?
查看>>
数据的价值 删除无用数据可降低风险
查看>>
2017年五大关键云趋势:容器、AI等
查看>>
JedisPool资源池优化
查看>>
数据库安全专家指出数据库取证仍然落后
查看>>
5G新规范:个人网络速度不低于下行100兆 上行50兆
查看>>
TensorFlow博客翻译——DeepMind转向TensorFlow
查看>>
信息化治理与北京治堵:疏图同归
查看>>
专访Dan Kohn:阡陌交迭,云原生布局开源生态构建及深度应用
查看>>
在Linux中添加普通新用户
查看>>