作者丨Arthur Casals
译者丨姚佳灵
微软宣布 C# 8.0 作为 .NET Core 3.0 版本的一部分正式可用,该消息同步发布于.NET Conf 2019 及其开发博客中。新的语言功能包括可为空的引用类型、异步流、默认接口成员及新的代码模式。Visual Studio 2019 支持所有的新功能。
可为空的引用类型是新版本中最重要的功能之一。它旨在通过使用特定语法规则来防止与空引用异常相关的场景,这个语法规则是:开发人员必须明确表示某个变量是否可以采用 null 值。在这种情况下,变量声明中的类型名必须附加“?”(类似可为空的值类型):
如果该变量的类型名后面没有附加“?”,那么,它被视为一个不可为空的引用类型。在这种情况下,编译器将强制实行不可为空的规则:该变量必须被初始化为一个非空值,并且该变量永远不能被赋予空值。可以(在大多数情况下不推荐)用变量名后面附加空宽容操作符“!”来覆盖这个行为:
还可以使用可为空上下文来控制是否给出可空警告,或者可为空的注解是否有影响。可以在项目级别或在带有 #nullable 和 #pragmawarning 预处理指令的源代码文件中指定可为空上下文。另外,一个类型可以具备的可为空行为是如下四种之一:无视(Oblivious),不可为空(nonnullable),可为空(nullable),未知(unknown)。不同的可为空类型会触发不同的编译行为。可为空引用类型的完整规范在这里。
另一个重要功能是引入了异步流。该新功能的目的是引入对迭代器和异步方法的支持。此类方法可以用于需要消费或产生持续结果流(即来自物联网设备或云服务)的场景中。
异步流通过 IAsyncEnumerable 和 IAsyncEnumerator 接口实现,这些接口可以与 async/await 功能(最初在 C# 5.0 中引进)结合使用。返回异步流的方法必须用 async 修饰符声明,还必须使用某个新接口作为其返回类型。它还必须包含 yield return 语句来返回异步流中的后续元素。
下面的例子来自微软的官方文档。它实现了一个生成从 0 到 19 的序列的方法,生成每个数字之间的等待时间为 100 毫秒:
继续阅读与本文标签相同的文章
德勤研究报告:《变革的力量:未来的医疗保健》
中国移动又有重大布局:两大新机构横空出世!
-
Excel如何批量添加单位、小数点、千位分隔符的?
2026-05-14栏目: 教程
-
三星Dex停止对Linux的支持
2026-05-14栏目: 教程
-
华为遭谷歌“断供”之后,微软也宣布新规,数亿用户措手不及
2026-05-14栏目: 教程
-
复制的表格,粘贴到DOC文档中没了框线?
2026-05-14栏目: 教程
-
大学真正“热门”的几个专业!这些好专业,有大学生却不愿选!
2026-05-14栏目: 教程
