[翻译] C# 8.0 预览
原文: C# 8.0 Previewed 在一个Channel 9 的 视频 中,Mads Torgersen展示了C#8的首批四个新特性。 可空引用类型 过去我们报道过 可空引用类型 ,简单地说,默认情况下引用类型将不再能为空。相应的,您必须使用与可空值类型相同的 Type? 语法将其明确标记为可空。 将 null 分配给不可为空的引用类型将得到一个编译器警告。 同样,从可空类型读取也将得到一个编译器警告,除非提前对有问题的变量进行显式检查。 所以理论上开发者需要做的唯一改变是适当情况下加上问号。 自从我们的报告,这个特性添加了一个新的语法。 考虑一种情况,你明知道可空变量x实际上不是空值,但却无法编译器证明。 在这种情况下,可以使用 x!.Method() 来禁止编译器对潜在空引用异常的警告。 异步流 (即 foreach async) 异步流类似于 IEnumerable 的异步方式。 正如我们之前报道的,异步流是自2015年以来一直在努力推进的事。经过多次讨论,最终确定的语法是: foreach await (string s in asyncStream) 使用下面的方法签名来定义一个异步迭代器 async IAsyncEnumerable<T> MethodName() 与普通的 IEnumberable 方法一样,你可以使用 yield return