根据.Net基金会发布的编程语言创新路线图,为了提高代码质量,MicrosoftC#8将拥有可为空的引用类型。除了为现有的非空引用添加安全引用类型外,编译器在遇到可空类型的引用或将Null值分配给非空变量类型时会发出警告。可空引用类型旨在帮助开发人员防止空引用异常,其核心是表达无效意图。当某物不为null时,编译器会识别它,如果用户将null赋值给一个没有声明为null的应用程序,编译器会给出警告。这样,程序员就可以第一时间发现错误并迅速改正。不过遗憾的是,微软目前还没有透露C#8的发布时间。除了上述特性外,C#8还计划了以下特性:采取适当措施处理违规行为。添加默认接口方法,接口可以通过虚拟扩展方法演化。API作者可以在未来版本中向接口添加方法,而不会破坏源代码或二进制兼容性。这个功能已经可以用于Java等语言。异步流功能提供抽象IEnumerable的异步版本,这是可以枚举中性集合的基本接口。扩展,提供定义扩展成员的新类型。虽然C#中已有方法是扩展类型的实例,但C#8将通过支持静态成员和实例成员来扩展该功能。
