C#8的可空引用类型

时间:2018-02-08 08:28:59

标签: .net nullable non-nullable c#-8.0

空引用异常是程序失败的主要来源之一。托尼霍尔称这是他十亿美元的错误。所以我特别期待C#8和新的可空引用类型功能。我想我已经很好地掌握了这个功能以及它对我的代码意味着什么。虽然有一个方面我正在努力解决这个问题,这就是default的行为方式。

目前在C#default(string)中将返回null。但是当C#8出现时,做string x = default(string);这样的事情肯定会让编译器直接发出警告。看起来这有点悖论。我也想知道default(string?)是否可能以及它甚至会返回什么。我想它必须为空,这只会增加我的困惑。

我认为此功能尚未预览发布,但我想知道是否有人知道如何处理此功能。

1 个答案:

答案 0 :(得分:5)

现在可以回答这个问题,而不是等待C#8发布。 C#现在“开放”开发,所以只需自己动手到SharpLab,选择NullabaleReferenceTypes分支并尝试代码。

它提供warning CS8600: Cannot convert null to non-nullable reference.default引用类型为nullnull不应分配给不可为空的string

如果您更喜欢在VS2017中测试预览,a preview plugin is available for the IDE, too